SHELL-Commande sed ne supprime pas les lignes
Résolu
Pedroo
-
helpeerr -
helpeerr -
Bonjour,
En shell, le code suivant :
sed -n '/error/d' monfichier.txt
ne marche pas : les lignes contenant 'error' ne sont pas supprimées
Merci pour votre aide
En shell, le code suivant :
sed -n '/error/d' monfichier.txt
ne marche pas : les lignes contenant 'error' ne sont pas supprimées
Merci pour votre aide
4 réponses
-
Salut,
Pour comprendre, bonne lecture ici
lami20j@debian-acer:~$ cat plop aaaa error bbbb error aaa cccc error dddd lami20j@debian-acer:~$ sed -n '/error/d' plop lami20j@debian-acer:~$ sed -e '/error/d' plop aaaa bbbb dddd lami20j@debian-acer:~$ cat plop aaaa error bbbb error aaa cccc error dddd lami20j@debian-acer:~$ sed -e '/error/d' plop > plop.tmp lami20j@debian-acer:~$ cat plop aaaa error bbbb error aaa cccc error dddd lami20j@debian-acer:~$ cat plop.tmp aaaa bbbb dddd lami20j@debian-acer:~$ sed -i.orig '/error/d' plop lami20j@debian-acer:~$ cat plop aaaa bbbb dddd lami20j@debian-acer:~$ cat plop.orig aaaa error bbbb error aaa cccc error dddd
-
-
Re,
J'ai cru qu'on pouvait le faire sans passer par un fichier temporaire.
Oui, on peut. C'était le dernier exemple avec l'option -i
Regarde attentivement ;-)
En fait le fichier original est sauvegardé avec l'extension .orig
lami20j@debian-acer:~$ sed -i.orig '/error/d' plop lami20j@debian-acer:~$ cat plop aaaa bbbb dddd lami20j@debian-acer:~$ cat plop.orig aaaa error bbbb error aaa cccc error dddd
-
-
-
Salut,
l'option -i n'est pas reconnue (illegal option)...
Tu es sur quel système?
Tu as quelle version de sed ?
Chez moi j'ailami20j@debian-acer:~$ sed --version GNU sed version 4.2.1
On peut le faire avec perl alors
lami20j@debian-acer:~$ cat plop aaaa error bbbb error aaa cccc error dddd lami20j@debian-acer:~$ perl -ni.orig -e 'print unless /error/' plop lami20j@debian-acer:~$ cat plop aaaa bbbb dddd lami20j@debian-acer:~$ cat plop.orig aaaa error bbbb error aaa cccc error dddd
-
Re,
Ou avec une combinaison grep et echo
lami20j@debian-acer:~$ cat plop aaaa error bbbb error aaa cccc error dddd lami20j@debian-acer:~$ var=$(grep -v error plop) && echo "$var" > plop lami20j@debian-acer:~$ cat plop aaaa bbbb dddd
-
la commande
sed --version
ne marche pas non plus... bizarre
Mais tes deux autres solutions (perl et grep+echo) marchent parfaitement, avec une préférence pour la dernière car je n'ai pas de fichier à supprimer ensuite.
Encore merci ;)-
Re,
De rien ;-)
avec une préférence pour la dernière car je n'ai pas de fichier à supprimer ensuite.
Il suffit d'enlever .orig de la commande perl et il n'y aura plus de fichier à supprimer.
Toutefois, quand on n'est pas sur de résultat il faut penser faire une sauvegarde de fichier d'origine
A savoir que .orig est-une extension crée par moi, tu peux mettre n'importe quoi .bak, .old, .ancien, .blabla
Voici sans sauvegarde de fichier original (la dernière commande montre qu'il n'y a pas d'autres fichiers à part plop)
lami20j@debian-acer:~$ cat plop aaaa error bbbb error aaa cccc error dddd lami20j@debian-acer:~$ perl -ni -e 'print unless /error/' plop lami20j@debian-acer:~$ cat plop aaaa bbbb dddd lami20j@debian-acer:~$ cat plop.orig cat: plop.orig: No such file or directory
-
-