4 ms·
If quoted string is the only thing you need to handle extra (i.e. no escaped quotes, newlines, etc) and if you have GNU awk: $ echo '"foo","bar,baz"' | awk
by asicsp 3y ago
If quoted string is the only thing you need to handle extra (i.e. no escaped quotes, newlines, etc) and if you have GNU awk:
$ echo '"foo","bar,baz"' | awk -v FPAT='"[^"]*"|[^,]*' '{print $1}'
"foo"
$ echo '"foo","bar,baz"' | awk -v FPAT='"[^"]*"|[^,]*' '{print $2}'
"bar,baz"
For a more robust solution, see https://stackoverflow.com/q/45420535 https://stackoverflow.com/q/45420535 or use other tools like https://github.com/BurntSushi/xsv https://github.com/BurntSushi/xsv
- poetaster 3y agoI wanted to ask why not the more simple form: echo '"foo","bar,baz","boo"' | awk -F"\",\"" '{print $1}' "foo echo '"foo","bar,baz","boo"' | awk -F"\",\"" '{print $2}' bar,baz echo '"foo","bar,baz","boo"' | awk -F"\",\"" '{print $3}' boo" Realizing that I have to strip the quotes that remain. Edit. formatting. EDit, again, from your link, the following is more terse and too my taste (still needs strips): awk -v FPAT='("[^"]*")+'