Удалите последнюю пустую строку из текстового файла, содержащего абзацы, используя GNU SED v4.2.1 на платформе Windows 7
У меня есть много текстовых файлов, которые содержат блоки текста, разделенные пустыми строками, и мне нужно удалить только самый последний 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. Может кто-нибудь, пожалуйста, помогите?