bonjour,
j'ecris un shell dans lequel je veux supprime toutes les occurences de
"toto" qui se trouve ds le fichier "monfic.txt" comment faut il faire
merci d'avance
bonjour,
j'ecris un shell dans lequel je veux supprime toutes les occurences de
"toto" qui se trouve ds le fichier "monfic.txt" comment faut il faire
merci d'avance
Je ne sais pas trop mais je pense qu'il faut se servir de la ch'tite commande GREP.
avec grep tu peux le localiser le mot "toto" mais pas le supprimer
Sisi !! avec grep -v !
En fait tu devrais pouvoir le faire comme ça :
Tiens nous au courant ;)
Code : Sélectionner tout - Visualiser dans une fenêtre à part cat tonfichier | grep -v toto > fichiersortie
perso je viens d'essayer et ça marche a merveille...sauf que ça vire toute la ligne en effet...
Hum ta solution enlève toutes les lignes qui contiennent toto, et non pas, toutes les occurences de toto.Envoyé par getupa
ça, ça enlève toutes les chaînes de caractères toto.
Code : Sélectionner tout - Visualiser dans une fenêtre à part cat tonfichier | sed 's/toto//g' > fichiersortie
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
C'est exact ! A vrai dire je l'avais compris comme ça ;)Envoyé par ggnore
Je viens de faire :
cat fic.txt | grep -v toto >> fic.txt
sa a planté c'est recursif
moi ce que je veux c'est qu'il me supprime toutes les lignes ou le mot toto apparait dans fic.txt
Normal !!! Il faut que tu le redirige dans un autre fichier que celui qui est lu (relit l'exemple !). Tu n'auras plus qu'à le renommer après !
Pour supprimer toutes les lignes qui contiennes toto, il faut utiliser la solution avec grep -v. La solution avec sed supprime toutes les occurences du mot toto, mais pas les lignes.
Sinon, si l'on veut vraiment travailler "sur place", il faut faire appel à Perl plutôt que sed ou grep.
La solution comme sed mais avec Perl :La solution comme grep mais avec Perl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -pi -e 's/toto//g' fic.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -pi -e 's/.*toto.*\n//g' fic.txt
Si tu n'as pas d'impératif de travail sur place et que tu peux créer un fichier temporaire (à détruire après), les solutions évoquées avec sed (le mot seulement) ou avec grep (toute la ligne) sont très bonnes.
On peut juste préciser davantage pour ne supprimer que le mot indiqué, et pas les mots contenant le mot ... afin d'éviter que de "gros rototos" ne se transforme en "gros ros" :Mais ça commence à compliquer l'expression
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -pi -e 's/(^|\s)toto($|\s)/$1$2/g' fic.txt![]()
Partager