Comment fusionner des lignes avec awk ou sed ?

Fermé
hamcc - 8 mars 2016 à 22:16
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 9 mars 2016 à 09:04
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

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
Modifié par dubcek le 9/03/2016 à 09:12
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
8 mars 2016 à 22:30
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
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
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