Ho l'abitudine di scrivere una riga per frase perché in genere compilo cose su LaTex o scrivo in qualche altro formato in cui le interruzioni di riga vengono ignorate. Uso una riga vuota per indicare l'inizio di un nuovo paragrafo.
Ora, ho un file scritto in questo stile che vorrei solo inviare come testo normale. Voglio rimuovere tutte le singole interruzioni di riga ma lasciare intatte le doppie interruzioni di riga. Questo è quello che ho fatto:
sed 's/$^/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt
Questo sostituisce le righe vuote con un po 'di testo che sono sicuro che non appare nel file: NEWLINE
e quindi elimina tutte le interruzioni di riga con awk (ho trovato quel trucco su alcuni siti Web) e quindi sostituisce le NEWLINE
s con le due interruzioni di riga richieste .
Sembra un modo lungo e tortuoso di fare una cosa abbastanza semplice. c'è un modo più facile? Inoltre, se ci fosse un modo per sostituire più spazi (che a volte si insinuano per qualche motivo) con spazi singoli, sarebbe anche bene.
Uso emacs, quindi se c'è qualche trucco specifico di emacs che va bene, ma preferirei vedere una versione pura di sed o pura awk.
tr -d "\n"
.