supprimer \n sur un nombre indéterminé de lignes consécutives [sed] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 12-04-2013 à 14:33:17
Quelque chose comme :
sed -e :a -e '/\\$/N; s/\\\n//; ta' |
Marsh Posté le 15-04-2013 à 11:51:31
Xavier_OM a écrit : Quelque chose comme :
|
c'est presque ce que j'ai fini par faire
en fait, j'ai obtenu ce que je voulais avec
sed -e 's/^\s*//' monfichier |sed -e ':a;N;s/\\\s*\n/ /;ta' > result |
Marsh Posté le 11-04-2013 à 19:54:23
Bonjour à vous
Je butte actuellement sur un petit problème avec sed
Voici ce que j'aimerais faire. J'ai un fichier où certaines lignes sont terminées par un \ (et éventuellement des espaces après) pour indiquer que la ligne n'est pas terminée en fait. J'aimerais regrouper ces lignes sur une seule ligne dans un fichier. Exemple :
key1 = val1
key2 = val2
key3 = val3a \
val3b \
val3c
key4 = val4
et j'aimerais obtenir un truc du style
key1 = val1
key2 = val2
key3 = val3a val3b val3c
key4 = val4
bien sur, rien n'est prédictif dans tout ça (combien de lignes consécutives à concaténer par exemple)
j'étais parti sur un truc simple qui fonctionne avec vi notamment:
s/\\\s*\n/ /
sauf que le \n est viré du buffer de sed au moment du pattern matching
donc ça marche bien avec vi, mais pas avec sed
J'ai bien vu des débuts de réponses avec la concaténation de ligne suivante (N;s....), mais j'arrive pas à trouver comment le faire pour certaines lignes et pas d'autres (en gros je peux le faire sur tout le fichier, sur deux lignes consécutives, mais pas sur x lignes consécutives)
alors certes, j'ai d'autres façons de faire, mais ma curiosité me pousse à essayer de trouver une solution élégante pour ça
merci pour votre aide
---------------
LE topic à lire