J'ai l'habitude d'écrire une ligne par phrase car je compile généralement des choses dans LaTex, ou j'écris dans un autre format où les sauts de ligne sont ignorés. J'utilise une ligne vierge pour indiquer le début d'un nouveau paragraphe.
Maintenant, j'ai un fichier écrit dans ce style que je voudrais simplement envoyer en texte brut. Je souhaite supprimer tous les sauts de ligne simples, mais laisser les sauts de ligne doubles intacts. Voici ce que j'ai fait:
sed 's/$^/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt
Cela remplace les lignes vides par du texte qui, je suis sûr, n'apparaît pas dans le fichier: NEWLINE
puis il supprime tous les sauts de ligne avec awk (j'ai trouvé cette astuce sur certains sites Web), puis il remplace le NEWLINE
s par les deux sauts de ligne requis .
Cela semble être un long chemin à parcourir pour faire une chose assez simple. Existe-t-il un moyen plus simple? De plus, s'il y avait un moyen de remplacer plusieurs espaces (qui s'introduisent parfois pour une raison quelconque) par des espaces uniques, ce serait bien aussi.
J'utilise emacs, donc s'il y a une astuce spécifique à emacs, c'est bien, mais je préfère voir une version pure sed ou pure awk.
tr -d "\n"
.