Comment supprimer un numéro spécifique dans le file?

J'ai un file:

1 2 5 6 8 0 0 0 0 1 2 5 6 8 0 0 0 0 1 2 5 6 8 0 0 0 0 1 2 5 6 8 0 0 0 0 

Je veux supprimer tous les zéros:

 1 2 5 6 8 1 2 5 6 8 1 2 5 6 8 1 2 5 6 8 

J'ai essayé tr -d [:0:] . Malheureusement, il n'est pas censé fonctionner de cette façon.

Je crois que sed et Perl feraient le travail, mais je ne sais pas exactement comment.

J'ai cherché sur Google, si vous me croyez, les résultats sont mitigés et pertinents, mais je ne suis pas capable de find le bon dans la première page.

tr est bien pour ce travail:

 tr -d 0 <file 

[:0:] n'est pas valide car vous devez utiliser une class de caractères entre [: et :] .

 [8]root@lab711:> cat file 1 2 5 6 8 0 0 0 0 1 2 5 6 8 0 0 0 0 1 2 5 6 8 0 0 0 0 1 2 5 6 8 0 0 0 0 [8]root@lab711:> sed 's/0//g' file 1 2 5 6 8 1 2 5 6 8 1 2 5 6 8 1 2 5 6 8 

Afin de supprimer tous les zéros dans le file, la command à utiliser est sed 's/0//g' filename . Le /0 représente tous les 0 dans le file. le // signifie replace avec rien. Le g représente globalement

essayer

 perl -pe 's/\s+0\b//g' <filename> 
  • -p loops sur les files ligne et imprimer $_
  • -e exécuter
  • /g Global (toutes les occurrences)
  • Regex s/\s+0\b// supprime des séries d'au less un espace, suivi du caractère 0 , suivi de la fin du mot.

Ou, en place rlocation dans le file,

 sed -ibbak -e 's/\s\+0\b//g' <filename> 
  • -i en place
  • -b.bak make back-up (l'extension est .bac )
  • Ici, le caractère regex + doit être échappé.
  • \s en regex est un espace
  • \b dans regex est la fin du mot

Espère que ça démarre!