objectif
Éviter les découpes naïves qui cassent sur des virgules dans des champs cités.
code minimal
# FPAT: champ = texte entre guillemets ou séquence sans virgule
awk -v FPAT='([^,]+)|("([^"]|"")*")' '{print $2}' data.csv
utilisation
# convertir en TSV propre
awk -v FPAT='([^,]+)|("([^"]|"")*")' '{
for (i=1;i<=NF;i++) { gsub(/^"|"$/, "", $i); gsub(/""/, """, $i) }
for (i=1;i<=NF;i++) printf("%s%s", $i, i==NF?"\n":"\t")
}' data.csv > data.tsv
variante(s) utile(s)
# filtrer et sélectionner des colonnes par nom (première ligne = header)
awk -v FPAT='([^,]+)|("([^"]|"")*")' '
NR==1{ for(i=1;i<=NF;i++) h[$i]=i; next }
$h["status"]=="ok" { print $h["id"], $h["name"] }
' data.csv
notes
- pour CSV complexes (UTF-8, délimiteurs custom), préférez
mlr,xsvou Python. FPATest supporté par gawk.