Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1445 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [sed] supprimer \n sur un nombre indéterminé de lignes consécutives

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[sed] supprimer \n sur un nombre indéterminé de lignes consécutives

n°1334899
biniou
Posté le 11-04-2013 à 19:54:23  profilanswer
 

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
mood
Publicité
Posté le 11-04-2013 à 19:54:23  profilanswer
 

n°1334947
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 12-04-2013 à 14:33:17  profilanswer
 

Quelque chose comme :

sed -e :a -e '/\\$/N; s/\\\n//; ta'


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1335115
biniou
Posté le 15-04-2013 à 11:51:31  profilanswer
 

Xavier_OM a écrit :

Quelque chose comme :

sed -e :a -e '/\\$/N; s/\\\n//; ta'



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


---------------
LE topic à lire

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [sed] supprimer \n sur un nombre indéterminé de lignes consécutives

 

Sujets relatifs
concaténation de lignes de fichiersSupprimer Linux, pour revenir à Windows
A l'aide !!! EFI supprimer.Comment supprimer le retour à la ligne final d'un fichier
Supprimer certains fichiers de dossiers et sous dossiersAfficher contenu lignes de fichiers avec critères
help SVP sur vim: comparer 2 fichiers et enlever lignes doublonnées[SHELL][SOLARIS 8]nombre de jour entre 2 dates
Trouver les lignes ds un fichier dont un champs est ds un autreComment supprimer proprement grub/grub2
Plus de sujets relatifs à : [sed] supprimer \n sur un nombre indéterminé de lignes consécutives


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR