filtrer les lignes de fichiers texte par certaines colonnes sans guillemets

J’ai donc un fichier que je voudrais seulement extraire de certaines lignes, mais malheureusement les chaînes de ces lignes ne sont pas entourées de guillemets. Comment puis-je filtrer ces lignes en fonction de la valeur de la 2ème colonne? Par exemple, j’ai:

ssortingng a,ssortingng b,ssortingng c,ssortingng d,ssortingng e ssortingng 1,ssortingng 2,ssortingng 3,ssortingng 4,ssortingng 5 ssortingng f,ssortingng b,ssortingng h,ssortingng i,ssortingng j ssortingng 6,ssortingng 7,ssortingng 8,ssortingng 9,ssortingng 0 

Et je veux seulement dans un nouveau fichier:

 ssortingng a,ssortingng b,ssortingng c,ssortingng d,ssortingng e ssortingng f,ssortingng b,ssortingng h,ssortingng i,ssortingng j 

J’essaie d’utiliser la commande:

 awk -F '","' 'BEGIN {OFS=","} { if (toupper($2) == "STRING B") print }' input.csv > output.csv 

Vous n’avez pas besoin d’inclure des guillemets doubles pour définir la valeur FS.

 $ awk -F, 'BEGIN {OFS=","} { if (toupper($2) == "STRING B") print }' file ssortingng a,ssortingng b,ssortingng c,ssortingng d,ssortingng e ssortingng f,ssortingng b,ssortingng h,ssortingng i,ssortingng j 

Votre code devrait fonctionner si vous utilisez -F, au lieu de -F '","' . Une façon un peu plus idiomatique de faire la même chose est

 awk -F, -v OFS=, 'toupper($2) == "STRING B"' input.csv 

En code awk, une condition sans action associée signifie que l’action par défaut (impression) est exécutée si la condition est vraie, ce qui entraîne le même effet avec moins de peluches.