Я хочу удалить новую строку \n
только с конца файла в unix
например.
abc
def
ghi
вывод должен быть
abc
def
ghi
В конце файла не должно быть ни одного \n
Я хочу удалить новую строку \n
только с конца файла в unix
например.
abc
def
ghi
вывод должен быть
abc
def
ghi
В конце файла не должно быть ни одного \n
Ты сможешь:
perl -pe 'chomp if eof' file1 > file2
Пример:
$ cat file1
abc
def
ghi
$ perl -pe 'chomp if eof' file1 > file2
$ cat file2
abc
def
ghi$
file1
совпадает с file2
, он может стереть файл. Имейте в виду. Со мной случилось. К счастью, я знал содержание.
- person Steven Lu; 17.10.2013
eof
становится истинным только тогда, когда вы пытаетесь прочитать за концом файла, что не обязательно произошло в режиме -pe
, когда $_
последняя строка файла.
- person zwol; 28.12.2013
Как правило, текстовые инструменты Unix более удобны, если у вас действительно есть новая строка в конце последней строки файла. Зачем нужно его убирать?
Вы не можете сделать это (насколько я знаю) с awk
, но с perl
это легко:
perl -e 'undef $/; $_ = <>; s/\R\z//; print'
РЕДАКТИРОВАТЬ: Спустя годы мне пришло в голову, что вы могли иметь в виду «как мне удалить завершающие пустые строки из конца файла»; другими словами, вы могли захотеть сократить два или более последовательных символа новой строки до одной, только в конце файла. Опять же, это проще всего с perl
:
perl -e 'undef $/; $_ = <>; s/\s+\z/\n/; print'
(Это приведет к удалению произвольных конечных символов пробелов, а не только символов новой строки. Это почти наверняка то, что вам нужно.)