Удалите последнюю пустую строку из текстового файла, содержащего абзацы, используя GNU SED v4.2.1 на платформе Windows 7 - PullRequest
0 голосов
/ 09 марта 2019

У меня есть много текстовых файлов, которые содержат блоки текста, разделенные пустыми строками, и мне нужно удалить только самый последний CR-LF в файле, удалив последнюю пустую строку.Например, файлы имеют следующую форму:

qwerty
asdfgh
<empty line>
zxcvbn
jklmnb
<last empty line>

Windows SED ведет себя иначе, чем Unix SED.Кавычки должны быть двойными, и «s / \ n // g» не удаляет символы \ n.Чтобы удалить их, весь файл должен быть прочитан в буфер шаблонов, прежде чем его можно будет редактировать.Например:

sed ":a;N;$!ba;s/\n//g" input.txt

удалит все символы \ n на платформе Windows, оставив одну строку текста, за которой следует пустая строка.

sed -e :a -e "/^\n*$/{$d;N;ba" -e "}" input.txt

удалит все завершающие пустые строки в концефайла на платформе Unix, но не на платформе Windows.

Однако до сих пор мне не удалось найти решение, которое удаляет только последний \ n.Может кто-нибудь помочь, пожалуйста?

...