supprimer une colonne particulière dans csv qui est entourée de guillemets

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.