Sans sed :
Code :
- $ cat TEST | while read toto
- > do
- > LIGNE1=$toto
- > read LIGNE2
- > read LIGNE3
- > echo "$LIGNE1 - $LIGNE2 - $LIGNE3"
- > done
|
Ca donne :
Code :
- blabla1-ligne1 - blabla1-ligne2 - blabla1-ligne3
- blabla2-ligne1 - blabla2-ligne2 - blabla2-ligne3
|
Explication :
lecture du fichier ligne par ligne, une fois la première ligne lue on en lit 2 autres qu'on range dans des variables, puis on affiche comme on veut. Puis on boucle tant qu'on peut lire qqch (c'est à ca que sert le while)
Avec sed ca donnerait un truc du genre (je suis pas spécialiste en sed multiline) :
Code :
- $ cat TEST | sed -e '/blabla1-ligne1/N' -e '/blabla1-ligne1.*blabla1-ligne2/N' -e 's/\n/ - /g'
|
Ca donne :
Code :
- blabla1-ligne1 - blabla1-ligne2 - blabla1-ligne3
- blabla2-ligne1
- blabla2-ligne2
- blabla2-ligne3
|
Explication :
on cherche la ligne blabla1-ligne1 et quand on l'a trouvé on fait remonter la ligne suivante pour venir la mettre au bout de la ligne courante (c'est le N).
puis on cherche la ligne "blabla1-ligne1 suivi de blabla1-ligne2" et on remonte la suivante
puis on sur cette ligne contenant "les 3 à la suite" on remplace les \n (retour à la ligne) par des -
Message édité par Xavier_OM le 29-01-2007 à 18:20:44
---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.