|
|
|
|
||||||
| linux.debian.user.french Forum sur Linux Debian. Debian-user-french@lists.debian.org |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
bonjour la liste,
J'aimerai tagué un fichier en rajoutant un motif du genre <TRAITE> en début de ligne de mon fichier. La difficulté provient du fait que je veux taguer uniquement certaines lignes (et pas en perl )Par exemple: # cat fichier toto ceci est la ligne 1 titi ceci est la ligne 2 tata ceci est la ligne 3 toto ceci est la ligne 4 tutu ceci est la ligne 5 Je fait un grep toto dans fichier_tempo # cat fichier_tempo toto ceci est la ligne 1 toto ceci est la ligne 4 Ensuite, dans un script qui lit fichier_tempo, je voudrais tagger les 2 lignes "toto ceci est la ligne 1" et "toto ceci est la ligne 4" du fichier et avoir ainsi en bout de course: # cat fichier <TRAITE>toto ceci est la ligne 1 titi ceci est la ligne 2 tata ceci est la ligne 3 <TRAITE>toto ceci est la ligne 4 tutu ceci est la ligne 5 Pourquoi ceci ? pour ne prendre que les nouvelles lignes "toto" lorsque je relancerai le script. Voici mon script actuel qui n'attend plus que le TAG. internet:/home/fregnier/scripts# cat verif_spam.sh #fab le 24/10/2006 #vérifier dans mail.log les nouveaux spam (qui sont en DISCARD) et envoyé les expediteurs et destinataires à root. #on tag les spam lorsqu'ils ont été traité FILE=/tmp/spam FILE2=/tmp/spam2 rm $FILE $FILE2 grep discard /var/log/mail.log > $FILE if test -s $FILE then cat $FILE | while read LALIGNE do QUAND=`echo $LALIGNE | awk '{print $1" "$2" "$3" " }'` TO_FROM=`echo $LALIGNE | awk -F";" '{print $2 }'` echo $QUAND $TO_FROM >> $FILE2 #je tag mail.log # mais comment ? done #on envoi le resultat à root cat $FILE2 | mail -s "Spams reçus:" root fi merci et a+ f. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Le 13445ième jour après Epoch,
fabrice regnier écrivait: > bonjour la liste, > > J'aimerai tagué un fichier en rajoutant un motif du genre <TRAITE> en > début de ligne de mon fichier. > La difficulté provient du fait que je veux taguer uniquement certaines > lignes (et pas en perl )[... tout plein de choses compliquées...] > grep discard /var/log/mail.log > $FILE C'est pour un fichier de log ? Dans ce cas, il est probablement plus aisé d'utiliser logtail ... Bien pratique ce petit programme. Sinon, si tu veux vraiment faire ton usine à gaz ... ben demande à quelqu'un d'autre, je m'en sens pas le courage, là ![]() |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Le 13445ième jour après Epoch,
fabrice regnier écrivait: > bonjour la liste, > > J'aimerai tagué un fichier en rajoutant un motif du genre <TRAITE> en > début de ligne de mon fichier. > La difficulté provient du fait que je veux taguer uniquement certaines > lignes (et pas en perl )[... tout plein de choses compliquées...] > grep discard /var/log/mail.log > $FILE C'est pour un fichier de log ? Dans ce cas, il est probablement plus aisé d'utiliser logtail ... Bien pratique ce petit programme. Sinon, si tu veux vraiment faire ton usine à gaz ... ben demande à quelqu'un d'autre, je m'en sens pas le courage, là ![]() |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Bonjour, Le mardi 24 octobre 2006, fabrice regnier a écrit... > J'aimerai tagué un fichier en rajoutant un motif du genre <TRAITE> en > début de ligne de mon fichier. > La difficulté provient du fait que je veux taguer uniquement certaines > lignes (et pas en perl )> Par exemple: > # cat fichier > toto ceci est la ligne 1 > titi ceci est la ligne 2 > tata ceci est la ligne 3 > toto ceci est la ligne 4 > tutu ceci est la ligne 5 > Je fait un grep toto dans fichier_tempo > # cat fichier_tempo > toto ceci est la ligne 1 > toto ceci est la ligne 4 > Ensuite, dans un script qui lit fichier_tempo, je voudrais tagger les 2 > lignes "toto ceci est la ligne 1" et "toto ceci est la ligne 4" du > fichier et avoir ainsi en bout de course: > # cat fichier > <TRAITE>toto ceci est la ligne 1 > titi ceci est la ligne 2 > tata ceci est la ligne 3 > <TRAITE>toto ceci est la ligne 4 > tutu ceci est la ligne 5 Si tu connais ton motif, mettons 'toto', et si j'ai bien compris... Je le fais en 2 passes car je ne suis pas doué avec sed : 1/ d'abord en fichier, mettons traite.sed, qui va ajouter la ligne <traité> avant la ligne 'toto' # traite.sed /toto/i\ <traité> 2/ puis le passage : sed -f traite.sed mon_fichier | sed /^<traité>/ N;s/\n//' > fichier_traite ou tu reprends les exemples d'hier ou avant hier pour ne pas faire un fichier temporaire fichier_traite, si tu es sûr de toi. -- 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 debian-user-french-REQUEST@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Bonjour, Le mardi 24 octobre 2006, fabrice regnier a écrit... > J'aimerai tagué un fichier en rajoutant un motif du genre <TRAITE> en > début de ligne de mon fichier. > La difficulté provient du fait que je veux taguer uniquement certaines > lignes (et pas en perl )> Par exemple: > # cat fichier > toto ceci est la ligne 1 > titi ceci est la ligne 2 > tata ceci est la ligne 3 > toto ceci est la ligne 4 > tutu ceci est la ligne 5 > Je fait un grep toto dans fichier_tempo > # cat fichier_tempo > toto ceci est la ligne 1 > toto ceci est la ligne 4 > Ensuite, dans un script qui lit fichier_tempo, je voudrais tagger les 2 > lignes "toto ceci est la ligne 1" et "toto ceci est la ligne 4" du > fichier et avoir ainsi en bout de course: > # cat fichier > <TRAITE>toto ceci est la ligne 1 > titi ceci est la ligne 2 > tata ceci est la ligne 3 > <TRAITE>toto ceci est la ligne 4 > tutu ceci est la ligne 5 Si tu connais ton motif, mettons 'toto', et si j'ai bien compris... Je le fais en 2 passes car je ne suis pas doué avec sed : 1/ d'abord en fichier, mettons traite.sed, qui va ajouter la ligne <traité> avant la ligne 'toto' # traite.sed /toto/i\ <traité> 2/ puis le passage : sed -f traite.sed mon_fichier | sed /^<traité>/ N;s/\n//' > fichier_traite ou tu reprends les exemples d'hier ou avant hier pour ne pas faire un fichier temporaire fichier_traite, si tu es sûr de toi. -- 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 debian-user-french-REQUEST@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Bonjour, Le mardi 24 octobre 2006, Jean-Michel OLTRA a écrit... > sed -f traite.sed mon_fichier | sed /^<traité>/ N;s/\n//' > fichier_traite ^ j'ai oublié le ' avant -- 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 debian-user-french-REQUEST@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Bonjour, Le mardi 24 octobre 2006, Jean-Michel OLTRA a écrit... > sed -f traite.sed mon_fichier | sed /^<traité>/ N;s/\n//' > fichier_traite ^ j'ai oublié le ' avant -- 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 debian-user-french-REQUEST@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Jean-Michel OLTRA a écrit, mardi 24 octobre 2006, à 22:33 :
> Bonjour, bonjour, > Je le fais en 2 passes car je ne suis pas doué avec sed : > > 1/ d'abord en fichier, mettons traite.sed, qui va ajouter la ligne > <traité> avant la ligne 'toto' > > # traite.sed > /toto/i\ > <traité> > > 2/ puis le passage : > > sed -f traite.sed mon_fichier | sed /^<traité>/ N;s/\n//' > fichier_traite Plus direct, sed -e '/toto/s/^/<traité>/' <mon_fichier >fichier_traité ou encore sed -i.old -e '/toto/s/^/<traité>/' fichier_modifié Par ailleurs, pour purger les lignes répétées d'un fichier, sans le trier au préalable, on peut utiliser awk '!n[$0]++' <fichier_avec_doublons >fichier_sans_doublons ou une variante avec délimiteur et numéro de champ... -- 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 debian-user-french-REQUEST@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Jean-Michel OLTRA a écrit, mardi 24 octobre 2006, à 22:33 :
> Bonjour, bonjour, > Je le fais en 2 passes car je ne suis pas doué avec sed : > > 1/ d'abord en fichier, mettons traite.sed, qui va ajouter la ligne > <traité> avant la ligne 'toto' > > # traite.sed > /toto/i\ > <traité> > > 2/ puis le passage : > > sed -f traite.sed mon_fichier | sed /^<traité>/ N;s/\n//' > fichier_traite Plus direct, sed -e '/toto/s/^/<traité>/' <mon_fichier >fichier_traité ou encore sed -i.old -e '/toto/s/^/<traité>/' fichier_modifié Par ailleurs, pour purger les lignes répétées d'un fichier, sans le trier au préalable, on peut utiliser awk '!n[$0]++' <fichier_avec_doublons >fichier_sans_doublons ou une variante avec délimiteur et numéro de champ... -- 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 debian-user-french-REQUEST@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org |
|
![]() |
| Outils de la discussion | |
|
|