Shell Supprimer sed

J’ai un fichier avec des données comme ceci:

1, 3, 0, 0, 0 0, 4, 5, 0, 5 2, 6, 0, 1, 0 

Je voudrais écrire un script shell pour supprimer toutes les lignes où le 3ème argument est 0 (ici les lignes 1 et 2)

Je sais déjà que

 sed -i '/0/d' file.txt 

mais je ne sais pas comment je peux sélectionner les 3èmes arguments, quels que soient les autres.

Avez-vous une idée?

Awk peut être un meilleur outil que sed pour cette tâche:

 awk -F' *, *' '$3 != 0 {print}' FILE 

Mais sed peut le faire:

 sed -i '/^[0-9][0-9]*, [0-9][0-9]*, 0,/d' FILE 
 sed -iE '/^([^,]+,){2} 0,/d' file 

expliqué avec explain.py :

 sed -iE '/^([^,]+,){2} 0,/d' file \_/ || 

|| || \_/ | | | ||

|| || | | \- delete command | ||

|| || | | | ||

|| || | \- followed by blank zero komma | ||

|| || | | ||

|| || \- two times this inner pattern | ||

|| || | ||

|| |\- followed by a comma | ||

|| | | ||

|| \- at least one of them | ||

|| | ||

|\- komma | ||

| | ||

\- not | ||

| || ||\- start of pattern, group of characters, which are | || || | || |\- at begin of line | || | | || \- start of pattern for delete command | || | |\- Extended regexp (parenthesis and braces without masking) | | | \- inplace changes | \- run sed

awk avec l’édition en place (similaire à sed -i)

 awk '$3!="0,"{print $0>FILENAME}' file 

Rubis (1.9+)

 ruby -ane 'print unless $F[2]=="0," ' file