Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2019 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Supprimer une ligne d'un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Supprimer une ligne d'un fichier

n°928929
bob007
Posté le 21-12-2004 à 10:31:41  profilanswer
 

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:

mood
Publicité
Posté le 21-12-2004 à 10:31:41  profilanswer
 

n°929151
jagstang
Pa Capona ಠ_ಠ
Posté le 21-12-2004 à 13:53:17  profilanswer
 

regarde du coté de grep et sed

n°929235
bob007
Posté le 21-12-2004 à 15:23:25  profilanswer
 

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

n°929321
jagstang
Pa Capona ಠ_ಠ
Posté le 21-12-2004 à 16:25:35  profilanswer
 
n°929362
matafan
Posté le 21-12-2004 à 17:08:32  profilanswer
 

grep -v pattern input > output

n°929731
bob007
Posté le 22-12-2004 à 09:23:37  profilanswer
 

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

n°930074
jagstang
Pa Capona ಠ_ಠ
Posté le 22-12-2004 à 14:57:47  profilanswer
 

alors ?

n°932240
bob007
Posté le 27-12-2004 à 09:17:12  profilanswer
 

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!

n°932485
jagstang
Pa Capona ಠ_ಠ
Posté le 27-12-2004 à 13:57:31  profilanswer
 
n°932487
jagstang
Pa Capona ಠ_ಠ
Posté le 27-12-2004 à 13:58:43  profilanswer
 

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

mood
Publicité
Posté le 27-12-2004 à 13:58:43  profilanswer
 

n°932501
Pillow
'cos the trees won't talk
Posté le 27-12-2004 à 14:23:14  profilanswer
 

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.

n°932688
matafan
Posté le 27-12-2004 à 19:25:20  profilanswer
 

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.

n°932712
Pillow
'cos the trees won't talk
Posté le 27-12-2004 à 20:54:07  profilanswer
 

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]  
 
 

n°932731
matafan
Posté le 27-12-2004 à 21:43:31  profilanswer
 

Perl roulaize, tout le monde le savait :D

n°1214531
axk47
Java Man vs Boolet Man
Posté le 04-10-2005 à 15:13:53  profilanswer
 

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
n°1214938
matafan
Posté le 04-10-2005 à 20:05:38  profilanswer
 

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

n°2137856
zamouranou​12
Posté le 20-04-2012 à 10:07:08  profilanswer
 

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 !!!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Supprimer une ligne d'un fichier

 

Sujets relatifs
formulaire & fichierLire fichier access....sans acess
[JS] écrire dans un fichier côté client ?comment aller à la ligne en vb6 ?
Ecrire dans un fichier avec TFileStream...effacer un ligne d'une table access en vba
[divers] Supprimer les retours à ligne présents dans fichier texte[vbscript] - supprimer une ligne dans un fichier
fortrant : comment supprimer une ligne ds un fichier[VB] Supprimer une ligne dans un fichier ?
Plus de sujets relatifs à : Supprimer une ligne d'un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR