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 > linux.debian.user.french > shell: ajouter du texte en début de ligne d'un fichier
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
linux.debian.user.french Forum sur Linux Debian. Debian-user-french@lists.debian.org

shell: ajouter du texte en début de ligne d'un fichier

Réponse
 
LinkBack Outils de la discussion
Vieux 24/10/2006, 15h10   #1
fabrice regnier
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut shell: ajouter du texte en début de ligne d'un fichier

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.
  Réponse avec citation
Vieux 24/10/2006, 18h10   #2
François TOURDE
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell: ajouter du texte en début de ligne d'un fichier

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Ã
  Réponse avec citation
Vieux 24/10/2006, 18h10   #3
François TOURDE
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell: ajouter du texte en début de ligne d'un fichier

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Ã
  Réponse avec citation
Vieux 24/10/2006, 21h40   #4
Jean-Michel OLTRA
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell: ajouter du texte en d ébut de ligne d'un fichier


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
  Réponse avec citation
Vieux 24/10/2006, 21h40   #5
Jean-Michel OLTRA
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell: ajouter du texte en d ébut de ligne d'un fichier


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
  Réponse avec citation
Vieux 24/10/2006, 22h10   #6
Jean-Michel OLTRA
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell: ajouter du texte en d ébut de ligne d'un fichier


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
  Réponse avec citation
Vieux 24/10/2006, 22h10   #7
Jean-Michel OLTRA
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell: ajouter du texte en d ébut de ligne d'un fichier


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
  Réponse avec citation
Vieux 24/10/2006, 22h20   #8
Jacques L'helgoualc'h
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell: ajouter du texte en début de ligne d'un fichier

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
  Réponse avec citation
Vieux 24/10/2006, 22h20   #9
Jacques L'helgoualc'h
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: shell: ajouter du texte en début de ligne d'un fichier

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
  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 04h55.


É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,26018 seconds with 17 queries