Comment fusionner des lignes avec awk ou sed ?

hamcc -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  3. hamcc
     
    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. UnGars
       
      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