Bien, plus simple que d'isoler la colonne avec awk, si vous avez besoin de supprimer tout ce qui a une certaine valeur pour un fichier donné, pourquoi ne pas simplement faire grep -v :
Par exemple, pour supprimer tout ce qui a la valeur "col2" en deuxième position ligne : col1,col2,col3,col4
grep -v ',col2,' file > file_minus_offending_lines
Si cela n'est pas suffisant, parce que certaines lignes peuvent être incorrectement dépouillées en faisant apparaître la valeur correspondante dans une colonne différente, vous pouvez faire quelque chose comme ceci :
awk pour isoler la colonne incriminée : par exemple
awk -F, '{print $2 "|" $line}'
le -F définit le champ délimité par ",", $2 signifie colonne 2, suivi d'un délimiteur personnalisé, puis de la ligne entière. Vous pouvez alors filtrer en supprimant les lignes qui commencer avec la valeur incriminée :
awk -F, '{print $2 "|" $line}' | grep -v ^BAD_VALUE
et ensuite on enlève ce qui se trouve avant le délimiteur :
awk -F, '{print $2 "|" $line}' | grep -v ^BAD_VALUE | sed 's/.*|//g'
(note - la commande sed est peu soignée car elle n'inclut pas les valeurs d'échappement. Aussi, le motif sed devrait être quelque chose comme "[^|]+" (c'est-à-dire tout ce qui n'est pas le délimiteur). Mais j'espère que c'est assez clair.