J’ai un fichier csv contenant
a,b,c,d,e,f,"gg,hh,ii",j,k
J’ai essayé d’utiliser quelque chose comme
awk -F ',' '{print $7}'
Je reçois
"gg
mais j’ai besoin du résultat comme
gg,hh,ii
puis-je le faire avec une simple commande awk ou sed sans aucune parsing syntaxique
s’il vous plaît aider
Perl à la rescousse!
perl -MText::CSV_XS=csv -we 'csv(in => shift, fragment => "col=7")' -- file.csv
Voir Texte :: CSV_XS pour plus de détails. L’option fragment
indique à la fonction csv
que la 7ème colonne.
Vous pouvez utiliser ceci:
awk -vFPAT='[^,]*|"[^"]*"' '{print $7}' file.csv
Utilisez FPAT
pour définir le contenu du champ au lieu de définir le séparateur de champs FS
(avec l’option -F
).
Pour la page de manuel awk
:
FPAT: Une expression régulière décrivant le contenu des champs dans un enregistrement. Lorsqu’elle est définie, gawk parsing l’entrée dans des champs, où les champs correspondent à l’expression régulière, au lieu d’utiliser la valeur de la variable FS comme séparateur de champ.