Supression de sauts de ligne (fichier texte) [Résolu/Fermé]

Signaler
-
 Bernd -
Bonjour,

J'ai un fichier dont le texte se présente comme ceci:

# Chaine1
Chaine2
# Chaine3
Chaine4
# Chaine5
Chaine6


Je souhaiterais supprimer le saut de ligne des lignes commençant par #, pour avoir ceci:

# Chaine1 Chaine2
# Chaine3 Chaine4
# Chaine5 Chaine6


Est-ce qu'il existe un moyen simple pour effectuer cette opération?
Merci d'avance pour vos réponses!

5 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 779
Salut,

Sous Linux en ligne de commande avec un petit utilitaire nommé "sed" (il existe aussi en version pour Windows), c'est une formalité :
tmpfs]$ cat plop
# Chaine1
Chaine2
# Chaine3
Chaine4
# Chaine5
Chaine6

[tmpfs]$ sed -i.bak 'N;s/\n/ /' plop

[tmpfs]$ cat plop
# Chaine1 Chaine2
# Chaine3 Chaine4
# Chaine5 Chaine6

[tmpfs]$
Si d'aventure ça te tentait, il te faudra adapter la commande pour Windows au niveau du caractère "fin de ligne" (\n) qui se traduit par "retour chariot + fin de ligne" (\r\n)...
Messages postés
52457
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
19 octobre 2020
14 327
...
sinon tu ouvres ton fichier avec Word, tu travailles avec Rechercher/Remplacer et l'option Spécial ; puis tu sauvegardes au format Texte .txt
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 779
<Hors sujet>

C'est bien, la retraite ! Surtout aux Antilles ... :-)
☻ Raymond ♂

Tu feras moins le mariole quand on se pointera tous chez toi cet été ;-DDDDD

</Hors sujet>
Merci pour vos réponses!

J'ai essayé sed, par contre il ne remplace pas tout le texte. Je me suis basé sur la commande que tu m'as donné et je l'ai modifiée pour que seules les lignes commençant par "#" soient prises en compte (en effet il y a du texte à ne pas traiter).

J'ai essayé ceci:
sed -i.bak "N;s/#\(.*\)\n/\1 /" plop.txt


Ca fonctionne, les sauts de ligne sont bien supprimés, mais pas partout! (Les 2/3 du texte environ sont remplacés)
De quoi cela peut-il venir?
Le fichier n'est pourtant pas très volumineux (15 ko environ). Je précise que j'ai la version 4.2-1 pour Windows.




Je n'ai pas Word mais j'ai OpenOffice, par contre je n'ai pas trouvé comment remplacer/supprimer un saut de ligne.

J'ai aussi essayé avec deux éditeurs de texte (Notepad++ et PSPad), mais je n'ai pas non plus trouvé comment remplacer/supprimer un saut de ligne. J'ai fait des essais avec \r, \n, \r\n en expressions régulières, sans succès.
Quelqu'un sait s'il est possible de faire cette opération avec OpenOffice ou avec un éditeur de texte?


Merci pour votre aide!
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 779
Je me doutais bien que tout ton texte n'était pas conforme à l'exemple (d'où la nécessité de donner des exemples le plus précis afin d'obtenir une solution maximisée)...

Essaye avec ça :
[tmpfs]$ cat plop
# Chaine1
Chaine2
# Chaine3
Chaine4
# Chaine5
Chaine6
Chaine7
Chaine8
# Chaine9
Chaine10

[tmpfs]$ sed '/^#/ N;s/\n/ /' plop
# Chaine1 Chaine2
# Chaine3 Chaine4
# Chaine5 Chaine6
Chaine7
Chaine8
# Chaine9 Chaine10

[tmpfs]$
Je n'ai pas mis le "-i.bak". A rajouter qu'une fois les essais concluants...
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 779
La même sur Windows...
C:\Program Files\GnuWin32\bin>type plop.txt
# Chaine1
Chaine2
# Chaine3
Chaine4
# Chaine5
Chaine6
Chaine7
Chaine8
# Chaine9
Chaine10

C:\Program Files\GnuWin32\bin>sed "/^#/ N;s/\n/ /" plop.txt
# Chaine1 Chaine2
# Chaine3 Chaine4
# Chaine5 Chaine6
Chaine7
Chaine8
# Chaine9 Chaine10

C:\Program Files\GnuWin32\bin>
;-))
Merci beaucoup jipicy!

Oui c'est de ma faute, je penserai à donner un exemple plus précis la prochaine fois que je demande de l'aide...


Merci encore et bonne soirée!