Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script : suppression de ligne dans un fichier

9 réponses
Avatar
Alexandre Mackow
Bonjour,
je suis en train de chercher(de galérer serait plus exact) comment
supprimer une ligne contenant une chaine de caractere (un nom
d'utilisateur dans mon cas) dans un fichier...
cat /monfichiertext | grep machaine
me ressort bien ma ligne mais comment la supprimer?

Par avance merci pour votre aide.



--
----------------
Alexandre Mackow



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

9 réponses

Avatar
Jean-Michel OLTRA
Bonjour,


Le lundi 23 octobre 2006, Alexandre Mackow a écrit...


je suis en train de chercher(de galérer serait plus exact) comment
supprimer une ligne contenant une chaine de caractere (un nom
d'utilisateur dans mon cas) dans un fichier...
cat /monfichiertext | grep machaine
me ressort bien ma ligne mais comment la supprimer?



Avec sed. Ce doit être (je galère toujours avec sed, mais je finis
toujours par trouver) :
sed '/machaine/d' fichier > new
et tu vérifies que tout va bien avant de renomer new...

--
jm

A.E.L. Sarl (R.C.S CASTRES 490843240)
http://www.affaires-en-ligne.com


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Alexandre
#!/usr/bin/perl -w

open(IN, "$ARGV[0]") or die ("open: $!");
open(OUT, ">fichier_temporaire0");

while(<IN>) {


if(m/chaine de caractères/g) {
s/$_//g;
}


print OUT $_;
}
close(IN);
close(OUT);

Il doit y avoir possibilité de le faire en une ligne avec perl -pi -e.

En espérant que ça aide.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Aurelien Roux
Le Mon, Oct 23, 2006 at 03:18:28PM +0200, Alexandre Mackow a écrit :
Bonjour,
je suis en train de chercher(de galérer serait plus exact) comment
supprimer une ligne contenant une chaine de caractere (un nom
d'utilisateur dans mon cas) dans un fichier...
cat /monfichiertext | grep machaine
me ressort bien ma ligne mais comment la supprimer?



Avec sed, je pense.
Je ne suis pas un expert, mais un truc genre

sed -i -e 's/machaine//g'


devrait supprimer le contenu de ta ligne. Il me semble qu'il existe une
option de sed pour supprimer directement une ligne, mais je ne me
rappelle plus, donc man sed.


Par avance merci pour votre aide.



--
----------------
Alexandre Mackow



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact





--
========================================================= Aurélien Roux

Doctorant (PhD)

Laboratoire d'Acoustique de l'Université du Maine
UMR CNRS 6613
Avenue Olivier Messiaen
72085 Le Mans Cedex 9
France

--------------------
Tel (bureau) : (33) 02 43 83 35 89
Fax : (33) 02 43 83 35 20
Email :
--------------------
http://laum.univ-lemans.fr
http://www.univ-lemans.fr

__________________________________
/ Chiffrez et signez vos messages
| Utilisez les clés GnuPG |
| |
| HOWTO : |
| http://vilya.org/gpg/gpg-intro.html |
__________________________________ /
=================================


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Cedric Cellier
On Mon, Oct 23, 2006 at 03:18:28PM +0200, Alexandre Mackow wrote:
Bonjour,
je suis en train de chercher(de galérer serait plus exact) comment
supprimer une ligne contenant une chaine de caractere (un nom
d'utilisateur dans mon cas) dans un fichier...
cat /monfichiertext | grep machaine
me ressort bien ma ligne mais comment la supprimer?



sed '/machaine/d' < /monfichiertext > /monautrefichier

voir aussi l'indispensable FAQ de sed, par exemple ici :

http://www.student.northpark.edu/pemente/sed/sedfaq.html


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Gilles MISSONNIER
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.

---1480404480-1226735733-1161612332=:24769
Content-Type: TEXT/PLAIN; charset=iso-8859-1; format=flowed
Content-Transfer-Encoding: QUOTED-PRINTABLE

le concours est ouvert :
ma soluce :

sed -i `grep -nw la_chaine le_fichier|cut -d: -f1`d le_fichier


s'assurer que la_chaine a supprimer est unique (mot complet):
supprimer "martin" mais pas dans "martinet"
et bien coller "`d"

m'enfin, mes 2 centimes...

---------------------------------------------------

On Mon, 23 Oct 2006, Cedric Cellier wrote:

On Mon, Oct 23, 2006 at 03:18:28PM +0200, Alexandre Mackow wrote:
Bonjour,
je suis en train de chercher(de galérer serait plus exact) comment
supprimer une ligne contenant une chaine de caractere (un nom
d'utilisateur dans mon cas) dans un fichier...
cat /monfichiertext | grep machaine
me ressort bien ma ligne mais comment la supprimer?



sed '/machaine/d' < /monfichiertext > /monautrefichier

voir aussi l'indispensable FAQ de sed, par exemple ici :

http://www.student.northpark.edu/pemente/sed/sedfaq.html




_-¯-_-¯-_-¯-_-¯-_
Gilles Missonnier
IAP -
01 44 32 81 36
---1480404480-1226735733-1161612332=:24769--


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Alexandre Mackow
Aurelien Roux wrote:

Le Mon, Oct 23, 2006 at 03:18:28PM +0200, Alexandre Mackow a écrit :


Bonjour,
je suis en train de chercher(de galérer serait plus exact) comment
supprimer une ligne contenant une chaine de caractere (un nom
d'utilisateur dans mon cas) dans un fichier...
cat /monfichiertext | grep machaine
me ressort bien ma ligne mais comment la supprimer?





Avec sed, je pense.
Je ne suis pas un expert, mais un truc genre

sed -i -e 's/machaine//g'


devrait supprimer le contenu de ta ligne. Il me semble qu'il existe une
option de sed pour supprimer directement une ligne, mais je ne me
rappelle plus, donc man sed.





Nickel donc le sed -i -e 's/machaine//g' monfichier
efface bien ma ligne....
@ Jean-Michel Oltra :

sed '/machaine/d' fichier > new fonctionne bien egalement mais m'oblige a une etape supplementaire me retrouvant avec le fichier source et modifié.. mais Nickel

@ Alexandre ... Je garde ton script perl de coté mais etant en bash pour le moment...Mais je verrai dès que j'aurai un peu de temps...



Merci donc a vous tous pour la pertinance des reponses...et ce soir ce
sera man sed et man awk pour bien m'endormir :-o

++

--
----------------
Alexandre Mackow



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Alexandre Mackow
Gilles MISSONNIER wrote:

le concours est ouvert :
ma soluce :

sed -i `grep -nw la_chaine le_fichier|cut -d: -f1`d le_fichier




ok solution acceptée, la ligne est supprimé donc plus de
lisibilité....pfff il me reste du man a parcourir..
en tout cas merci pour (toutes) ces solutions..

++

Alexandre Mackow


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
Gilles MISSONNIER a écrit, lundi 23 octobre 2006, à 16:05 :
le concours est ouvert :
ma soluce :

sed -i `grep -nw la_chaine le_fichier|cut -d: -f1`d le_fichier



Un peu tordu :) --- et l'option -w de grep ne traite pas globalement un
login avec tiret :

$ echo Debian-exim | grep -w exim
Debian-exim

s'assurer que la_chaine a supprimer est unique (mot complet):
supprimer "martin" mais pas dans "martinet"
et bien coller "`d"



Oui, mais il faudrait aussi s'assurer, grâce au délimiteur, que la
chaîne correspond au bon champ(*) ; par exemple, comme dans le fichier
/etc/passwd :

awk -F: '$1!="martin"' <ancien >nouveau

ou encore :

sed -i.old -e '/^martin:/d' le_fichier


(* « bin » est un login valide ;)
--
Jacques L'helgoualc'h


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
manioul
On Mon, Oct 23, 2006 at 04:59:02PM +0200, Jacques L'helgoualc'h wrote:
Gilles MISSONNIER a écrit, lundi 23 octobre 2006, à 16:05 :
> le concours est ouvert :
> ma soluce :
>
> sed -i `grep -nw la_chaine le_fichier|cut -d: -f1`d le_fichier

Un peu tordu :) --- et l'option -w de grep ne traite pas globalement un
login avec tiret :

$ echo Debian-exim | grep -w exim
Debian-exim

> s'assurer que la_chaine a supprimer est unique (mot complet):
> supprimer "martin" mais pas dans "martinet"
> et bien coller "`d"

Oui, mais il faudrait aussi s'assurer, grâce au délimiteur, que la
chaîne correspond au bon champ(*) ; par exemple, comme dans le fichier
/etc/passwd :

awk -F: '$1!="martin"' <ancien >nouveau

ou encore :

sed -i.old -e '/^martin:/d' le_fichier


(* « bin » est un login valide ;)
--
Jacques L'helgoualc'h


grep -v ma_chaine mon_fichier > mon_fichier_sans_ma_chaine

++ ;)
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact