PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > supprimer des lignes d'après une expression
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

supprimer des lignes d'après une expression

Réponse
 
LinkBack Outils de la discussion
Vieux 26/02/2007, 15h40   #1
kevin
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut supprimer des lignes d'après une expression

Bonjour

Comment puis-je, dans un fichier texte, supprimer automatiquement une ligne
si elle contient l'expression 'toto' ?

merci

ps : c'est un gros fichier (3Go)
  Réponse avec citation
Vieux 26/02/2007, 15h48   #2
Marc Boyer
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: supprimer des lignes d'après une expression

Le 26-02-2007, kevin <nomail@valid.invalid> a écrit:
> Comment puis-je, dans un fichier texte, supprimer automatiquement une ligne
> si elle contient l'expression 'toto' ?


grep -v

> ps : c'est un gros fichier (3Go)


Faut prendre son temps...
Plus sérieusement, ça dépend si tu as 3Go de libre ou pas.
Si tu as 3Go de libre:
grep -v toto GrosFichier > GrosFichierSansToto

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
  Réponse avec citation
Vieux 27/02/2007, 11h01   #3
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: supprimer des lignes d'après une expression

2007-02-26, 15:48(+00), Marc Boyer:
> Le 26-02-2007, kevin <nomail@valid.invalid> a écrit:
>> Comment puis-je, dans un fichier texte, supprimer automatiquement une ligne
>> si elle contient l'expression 'toto' ?

>
> grep -v
>
>> ps : c'est un gros fichier (3Go)

>
> Faut prendre son temps...
> Plus sérieusement, ça dépend si tu as 3Go de libre ou pas.
> Si tu as 3Go de libre:
> grep -v toto GrosFichier > GrosFichierSansToto


Et sinon:

perl -ne 'print unless /toto/;
END{truncate STDOUT, tell STDOUT}
' < GrosFichier 1<> GrosFichier

--
Stéphane
  Réponse avec citation
Vieux 27/02/2007, 11h27   #4
kevin
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: supprimer des lignes d'après une expression

Stephane Chazelas sur fr.comp.os.unix le mardi 27 février 2007 12:01

> 2007-02-26, 15:48(+00), Marc Boyer:
>> Le 26-02-2007, kevin <nomail@valid.invalid> a écrit:
>>> Comment puis-je, dans un fichier texte, supprimer automatiquement une
>>> ligne si elle contient l'expression 'toto' ?

>>
>> grep -v
>>
>>> ps : c'est un gros fichier (3Go)

>>
>> Faut prendre son temps...
>> Plus sérieusement, ça dépend si tu as 3Go de libre ou pas.
>> Si tu as 3Go de libre:
>> grep -v toto GrosFichier > GrosFichierSansToto

>
> Et sinon:
>
> perl -ne 'print unless /toto/;
> END{truncate STDOUT, tell STDOUT}
> ' < GrosFichier 1<> GrosFichier
>


merci à vous deux
  Réponse avec citation
Vieux 02/03/2007, 15h10   #5
Jean-Rene David
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: supprimer des lignes d'après une expression

* Stephane Chazelas [2007.02.27 11:01]:
> perl -ne 'print unless /toto/;
> END{truncate STDOUT, tell STDOUT}
> ' < GrosFichier 1<> GrosFichier


Si je comprend bien, on utilise "1<>" plutôt que ">" pour
éviter que "GrosFichier" soit tronqué avant que la lecture
ne commence.

Mais est-ce que ça marche seulement dans le cas particulier
où on retranche des lignes? Peut-on toujours être sûr que la
lecture précède l'écriture?

--
JR
  Réponse avec citation
Vieux 02/03/2007, 15h27   #6
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: supprimer des lignes d'après une expression

2007-03-02, 09:10(-06), Jean-Rene David:
> * Stephane Chazelas [2007.02.27 11:01]:
>> perl -ne 'print unless /toto/;
>> END{truncate STDOUT, tell STDOUT}
>> ' < GrosFichier 1<> GrosFichier

>
> Si je comprend bien, on utilise "1<>" plutôt que ">" pour
> éviter que "GrosFichier" soit tronqué avant que la lecture
> ne commence.
>
> Mais est-ce que ça marche seulement dans le cas particulier
> où on retranche des lignes? Peut-on toujours être sûr que la
> lecture précède l'écriture?


Oui, ca ne marche seulement que quand ce qu'on ecrit est moins
gros que ce qu'on lit (ou aussi gros).

On pourra s'en tirer toutefois dans le cas contraire si le
fichier est moins gros que ce que perl lit en un coup
(probablement une page souvent 4096 octets).

--
Stéphane
  Réponse avec citation
Vieux 02/03/2007, 16h51   #7
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: supprimer des lignes d'après une expression

Jean-Rene David wrote in message
<slrneugfj0.8r1.jrdavid@princo.homelinux.org>:
> Peut-on toujours être sûr que la
> lecture précède l'écriture?


Si ce qui est écrit dépend de ce qui est lu, il y a des chances, oui, à
moins d'avoir inventé le programme à remonter le temps.
  Réponse avec citation
Vieux 02/03/2007, 17h13   #8
Jean-Rene David
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: supprimer des lignes d'après une expression

* Nicolas George [2007.03.02 16:51]:
> Jean-Rene David wrote in message
> <slrneugfj0.8r1.jrdavid@princo.homelinux.org>:
>> Peut-on toujours être sûr que la
>> lecture précède l'écriture?

>
> Si ce qui est écrit dépend de ce qui est lu, il y a des chances, oui, à
> moins d'avoir inventé le programme à remonter le temps.


Ouais bon.

Le fait que "ce qui est écrit dépend de ce qui est lu" est
propre à la question particulière de l'OP, et même ça ne
garanti pas qu'on écrira toujours moins ou autant que ce
qu'on lit.

Ma question portait sur l'utilisation de la construction
"< fichier 1<>fichier" en général.

--
JR
  Réponse avec citation
Vieux 11/03/2007, 10h42   #9
Michel Billaud
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: supprimer des lignes d'après une expression

Stephane Chazelas <cette.adresse@est.invalid> writes:

> 2007-02-26, 15:48(+00), Marc Boyer:
> > Le 26-02-2007, kevin <nomail@valid.invalid> a écrit:
> >> Comment puis-je, dans un fichier texte, supprimer automatiquement une ligne
> >> si elle contient l'expression 'toto' ?

> >
> > grep -v

....
> > Plus sérieusement, ça dépend si tu as 3Go de libre ou pas.
> > Si tu as 3Go de libre:
> > grep -v toto GrosFichier > GrosFichierSansToto

>
> Et sinon:
>
> perl -ne 'print unless /toto/;
> END{truncate STDOUT, tell STDOUT}
> ' < GrosFichier 1<> GrosFichier


Tout de suite les gros mots..
sed -i /toto/d Grosfichier

MB

--
Michel BILLAUD billaud@labri.fr
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)
  Réponse avec citation
Vieux 11/03/2007, 15h17   #10
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: supprimer des lignes d'après une expression

2007-03-11, 10:42(+01), Michel Billaud:
> Stephane Chazelas <cette.adresse@est.invalid> writes:
>
>> 2007-02-26, 15:48(+00), Marc Boyer:
>> > Le 26-02-2007, kevin <nomail@valid.invalid> a écrit:
>> >> Comment puis-je, dans un fichier texte, supprimer automatiquement une ligne
>> >> si elle contient l'expression 'toto' ?
>> >
>> > grep -v

> ...
>> > Plus sérieusement, ça dépend si tu as 3Go de libre ou pas.
>> > Si tu as 3Go de libre:
>> > grep -v toto GrosFichier > GrosFichierSansToto

>>
>> Et sinon:
>>
>> perl -ne 'print unless /toto/;
>> END{truncate STDOUT, tell STDOUT}
>> ' < GrosFichier 1<> GrosFichier

>
> Tout de suite les gros mots..
> sed -i /toto/d Grosfichier

[...]

Ca n'aidera pas. sed -i ne travaille pas /in-place/ il utilse un
fichier temporaire (du meme nom que le fichier original, mais
au moment de lire la dernier ligne, les deux fichiers coexistent
sur disque et donc occupent deux fois la taille du fichier
original). La solution perl si dessus overwrite le fichier
original, c'est different et ne fonctionne que dans certains cas
comme celui-ci ou ce qu'on ecrit est toujours plus petit (ou de
meme taille) que ce qu'on lit.

--
Stéphane
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 03h02.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,14552 seconds with 18 queries