[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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



Reply to: