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 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
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
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]