Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/09/2011, à 18:49

wolf85kunst

supprimer une ligne d'un fichier en ligne de cmd [RESOLU]

Bonjour,

Je voudrais tout bêtement supprimer la ligne d'un fichier, le plus simplement possible.

cat monfichier.txt | grep -v "ligne_intrus"

Cette commande m'affiche mon fichier comme je le souhaite. Seulement, je souhaiterai rediriger le résultat vers ce même fichier (afin de l'enregistrer), mais ça ne fonctionne pas.

cat monfichier.txt | grep -v "ligne_intrus" > monfichier.txt

Je sais qu'il existe des commandes spécialisée pour ce genre de traitement, comme "sed", mais je préfère y aller par étape et je voudrais comprendre mon erreur.

Quel est donc la solution avec "GREP".

Merci à tous.

Dernière modification par wolf85kunst (Le 15/09/2011, à 03:27)


Les raisonnables ont duré, les passionnés ont vécu.
-- 10.04 Lucid Lynx --

Hors ligne

#2 Le 14/09/2011, à 19:02

Bousky

Re : supprimer une ligne d'un fichier en ligne de cmd [RESOLU]

1) « cat <fichier> | grep <critère> » ça sert à rien et ça utilise inutilement des ressources, utilises « grep <critère> <fichier> ».

2) grep (de même que sed, et la plus part des programmes travaillant sur un fichier texte) lit directement dans le fichier, et la redirection l'écrit aussi directement. Comme la redirection écrase le fichier, elle commence par le vider, et grep travaille alors sur un fichier vide… Il y a deux solutions :
- faire une copie modifiée du fichier puis la renommer :

grep -v "ligne_intrus" monfichier.txt > monfichier.txt.tmp
mv -f monfichier.txt.tmp monfichier.txt

- utiliser un programme qui permet de travailler sur place (grep ne le permet pas à ma connaissance) comme sed avec l'option « -i » :

sed -i "/ligne_intrus/d" monfichier.txt

Dernière modification par Bousky (Le 14/09/2011, à 19:03)


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#3 Le 14/09/2011, à 19:11

wolf85kunst

Re : supprimer une ligne d'un fichier en ligne de cmd [RESOLU]

Merci beaucoup pour cette réponse complète et rapide. Ça règle mon problème.

Encore merci.


Les raisonnables ont duré, les passionnés ont vécu.
-- 10.04 Lucid Lynx --

Hors ligne

#4 Le 14/09/2011, à 19:38

Bousky

Re : supprimer une ligne d'un fichier en ligne de cmd [RESOLU]

Dans ce cas édites le premier message pour ajouter « Résolu » au titre.


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne