Supprimer une ligne d'un fichier

Supprimer une ligne d'un fichier - Shell/Batch - Programmation

Marsh Posté le 21-12-2004 à 10:31:41    

Salut all!
 
Je voudrais savoir si quelqu'un peut m'expliquer comment sous bash  :love: on peut  faire un ti script qui va bien pour supprimer une ligne d'un fichier.
La ligne a supprimer est celle qui match avec les paramètres, enfin je ne sais pas si je suis tres clair... :??:  
 
Merci de votre aide!  :jap:

Reply

Marsh Posté le 21-12-2004 à 10:31:41   

Reply

Marsh Posté le 21-12-2004 à 13:53:17    

regarde du coté de grep et sed

Reply

Marsh Posté le 21-12-2004 à 15:23:25    

on peut supprimer avec grep ou sed ?? Pour trouver la ligne et tout, je vois mais pour delete la ligne!!
 
Merci en tous cas!

Reply

Marsh Posté le 21-12-2004 à 16:25:35    

Reply

Marsh Posté le 21-12-2004 à 17:08:32    

grep -v pattern input > output

Reply

Marsh Posté le 22-12-2004 à 09:23:37    

ok merci je vais lire tout ca, mais je ne vois vraiment pas la!

Reply

Marsh Posté le 22-12-2004 à 14:57:47    

alors ?

Reply

Marsh Posté le 27-12-2004 à 09:17:12    

alors je comprends pas! :(
Je pige l'histoire pour trouver la bonne ligne, y'a pas de problème, mais comment ma supprimer du fichier, la c'est une autre histoire!

Reply

Marsh Posté le 27-12-2004 à 13:57:31    

Reply

Marsh Posté le 27-12-2004 à 13:58:43    

en gros, un truc du style  
 
'd/^a//'
 
supprmira toute les lignes qui commence par 'a'

Reply

Marsh Posté le 27-12-2004 à 13:58:43   

Reply

Marsh Posté le 27-12-2004 à 14:23:14    

JagStang a écrit :

en gros, un truc du style  
 
'd/^a//'
 
supprmira toute les lignes qui commence par 'a'


 
 
Tu ne voulais pas dire plutôt '/^a/d' ?  :whistle:  
 
Je crois que ce que bob007  ne comprend pas c'est comment récupérer le résultat de la commande (résultat dirigé sur stdout par défaut). Il suffit de rediriger stdout vers un fichier, avec '>' comme le post de matafan le suggérait.
 
Donc pour supprimer toutes les lignes qui commencent par a, c'est : sed -e '/^a/d' input_file > output_file.
 
Cependant si l'entrée et la sortie sont le même fichier, ça ne va pas marcher. Dans ce cas tu peux utiliser l'option -i de sed : sed -ie '/^a/d' nom_fichier.

Reply

Marsh Posté le 27-12-2004 à 19:25:20    

Le sed de gnu a une option -i qui permet de modifer directement le fichier d'entree.
 
Sinon, mon grep -v ca ne vous plait pas ? C'est surement plus rapide que sed.

Reply

Marsh Posté le 27-12-2004 à 20:54:07    

matafan a écrit :


Sinon, mon grep -v ca ne vous plait pas ? C'est surement plus rapide que sed.


 
Si, moi j'aime bien grep :o  
Mais là c'était peut être un peu léger pour ce qu'il voulait faire. Plus simple à utiliser mais un peu plus limité. Et il n'y a pas d'équivalent au -i de sed [:spamafote]
 
Je me suis demandé ce que ça donnait du coté des performances, donc un petit test à l'arrache avec un fichier texte généré aléatoirement:
 


 
$ ls -sh bench
146M bench
 
$ time sed -e '/a/d' bench > sed
 
real    0m29.322s
user    0m22.307s
sys     0m0.860s
 
$ time grep -v 'a' bench > grep
 
real    0m30.196s
user    0m23.686s
sys     0m0.776s
 
$time perl -ne 'print unless /a/' bench > perl
 
real    0m9.192s
user    0m3.389s
sys     0m0.770s
 
$ md5sum sed grep perl
38a8bf14af72f70a23e1ec482debc16c  sed
38a8bf14af72f70a23e1ec482debc16c  grep
38a8bf14af72f70a23e1ec482debc16c  perl
 


 
Je vous laisse tirer vos propres conclusions [:petrus75]  
 
 

Reply

Marsh Posté le 27-12-2004 à 21:43:31    

Perl roulaize, tout le monde le savait :D

Reply

Marsh Posté le 04-10-2005 à 15:13:53    

matafan a écrit :

Perl roulaize, tout le monde le savait :D


 
sinon j'ai essayé la solution avec Sed mais ça ne marche pas.
quelqu'un aurait une idée en shell de comment supprimer une ligne dans un fichier
merci


---------------
"Rendez tout aussi simple que possible mais ne simplifierez rien" Albert Einstein
Reply

Marsh Posté le 04-10-2005 à 20:05:38    

sed '/toto/d' file
 
Avec eventuellement le flag -i. Je crois que ca a deja ete dit il y a 10 mois.

Reply

Marsh Posté le 20-04-2012 à 10:07:08    

bonjour svp j'ai un prob !! l'orsque j'esaiye de supprimer une chaine dans un fichier tous le contenue sera supprimé!! j’utilise sed !!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed