El 10/11/23 a las 17:11, Ed Morton escribió:
Thanks for the quick response Andy.
It's not a huge deal for me personally as I don't expect to ever NEED
that functionality, e.g. I'd normally write a shell script to call
any non-trivial awk script so I can always add `--csv` when
appropriate from shell, and if I wanted to switch to CSV mode
mid-processing to do anything like parse a field that contains CSV
then FPAT/patsplit(), or FS/split() if the opposite, are almost
certainly good enough. And I could always pipe+getline to a new
script in a subshell if absolutely necessary.
Please have a look at the pure [g]awk-csvio library available at
http://mcollado.z15.es/gawk-extras/
Example, convert a CSV file to tab-delimited file:
gawk '
BEGIN{ FS=OFS="\t" }
@include "csvio"
{
csvimport()
print csvrecord()
}
' some_data_file.csv > some_data_file.tab
If you have a script that process regular awk records delimited by a
suitable FS, this script can be used also to process CSV records by
just adding a single additional first rule: '{ csvimport() }'. That's
all.
Well, this approach requires OFS to match FS. As usual.
HTH