Comment fusionner des lignes avec awk ou sed ?

Bonjour,
voilà , j'ai un traitement à faire et je galère pour y arriver .

Je cherche à remplacer dans un fichier comme suit:
#cat fichier.txt
a1 b1 c1 \
d1
a2 a3 a4
a5
a6 a7 \
a8

et je veux arriver à faire comme suit:
#cat fichier.txt
a1 b1 c1 d1
a2 a3 a4
a5
a6 a7 a8

c'est à dire : si une ligne se termine par "\" alors il faut la fusionner avec la ligne suivante.

Merci pour votre aide

3 réponses

  1. Contributeur
    hello
    $ awk 'sub("\\\\", "") {printf $0; next} 1' fichier
    a1 b1 c1 d1
    a2 a3 a4
    a5
    a6 a7 a8
    aa bb cc dd ee zz
    1
    1. Contributeur
      Salut,

      $ cat plop 
      a1 b1 c1 \
      d1
      a2 a3 a4
      a5
      a6 a7 \
      a8

      $ sed '/\\$/{N;s/\\\n//}' plop
      a1 b1 c1 d1
      a2 a3 a4
      a5
      a6 a7 a8

      0
      1. Merci zipe31,

        C'est le top, mais comment peut on faire la même chose avec des lignes qui se suivent en "\" comme suit:
        #cat plop
        a1 b1 c1 \
        d1
        a2 a3 a4
        a5
        a6 a7 \
        a8
        aa bb cc \
        dd ee \
        zz


        pour arriver à :
        a1 b1 c1 d1
        a2 a3 a4
        a5
        a6 a7 a8
        aa bb cc dd ee zz

        Merci beaucoup pour ta réactivité.
        0
        1. Salut,

          $ cat brol 
          a1 b1 c1 \
          d1
          a2 a3 a4
          a5
          a6 a7 \
          a8
          aa bb cc \
          dd ee \
          zz

          $ sed ':z;/\\$/{N;b z};s/\\\n//g;' brol
          a1 b1 c1 d1
          a2 a3 a4
          a5
          a6 a7 a8
          aa bb cc dd ee zz
          0