Forum Programmation.autre Recherche script sed tout simple

Posté par  .
Étiquettes : aucune
0
17
août
2008
Bonjour,
Je voudrai écrire une chaîne de caractère toutes les 3 lignes de mon texte. Typiquement, je voudrai transformer un:

ligne1
ligne2
ligne3
ligne4
ligne5
ligne6
ligne7

en

--> ligne1
ligne2
ligne3
--> ligne4
ligne5
ligne6
--> ligne7

Je suis sur que ça doit pas être trop complexe, mais je suis pas très habitué de sed quand il s'agit pas de truc ultra simple

Merci!
  • # avec GNU Sed,

    Posté par  (site web personnel) . Évalué à 10.

    on peut sélectionner des lignes modulo n :
    sed -e '1~3s/^/--> /'
    devrait faire ce que tu demandes.

    N.B. info sed est plus complet que la page de manuel, et pour les trucs dingues, voir http://sed.sf.net/.
  • # Avec awk

    Posté par  . Évalué à 5.

    awk '{if (NR%3==0) {print "->", $0} else print}'

    Bien moins élégant que la solution sed ci-dessus, mais peut servir comme base pour des variations autour de ce thème.
    • [^] # Re: Avec awk

      Posté par  (site web personnel) . Évalué à 2.

      Oui, Awk est préférable dès qu'on fait de l'arithmétique (entre autres) --- c'est plutôt NR%3==1 pour l'exemple.

      Ici, un Sed non-Gnu peut le faire aussi sans calcul apparent :
      sed -e 's/^/--> /;N;N'
      mais ça se complique quand le reste n'est pas 1...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.