У меня есть привычка писать по одной строке на предложение, потому что я обычно компилирую вещи в LaTex или пишу в каком-то другом формате, где разрывы строк игнорируются. Я использую пустую строку, чтобы указать начало нового абзаца.
Теперь у меня есть файл, написанный в этом стиле, который я хотел бы просто отправить в виде простого текста. Я хочу удалить все одиночные разрывы строк, но оставлю их без изменений. Вот что я сделал:
sed 's/$^/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt
Это заменяет пустые строки некоторым текстом, который, я уверен, не появляется в файле: NEWLINE
затем он удаляет все разрывы строк с помощью awk (я нашел этот трюк на каком-то веб-сайте), а затем заменяет NEWLINE
s необходимыми двумя переносами строк. ,
Это похоже на длинный способ сделать довольно простую вещь. Есть ли более простой способ? Кроме того, если бы был способ заменить несколько пробелов (которые иногда по какой-то причине закрадывались) на отдельные пробелы, это тоже было бы хорошо.
Я использую emacs, так что если есть какой-то трюк, специфичный для emacs, это хорошо, но я бы предпочел увидеть версию sed или pure awk.
tr -d "\n"
.