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