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

2006-10-24 Par sujet fabrice regnier
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
TRAITEtoto ceci est la ligne 1
titi ceci est la ligne 2
tata ceci est la ligne 3
TRAITEtoto 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.



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

2006-10-24 Par sujet François TOURDE
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à ;)



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

2006-10-24 Par sujet Jacques L'helgoualc'h
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]