Удалить перевод строки из конца файла - PullRequest
8 голосов
/ 26 декабря 2011

Я хочу удалить символ новой строки \n только с конца файла в unix
например

abc  
def  
ghi
​

вывод должен быть

abc  
def  
ghi

В конце файла естьне должно быть одного \n

Ответы [ 2 ]

12 голосов
/ 26 декабря 2011

Вы можете:

perl -pe 'chomp if eof' file1 > file2

Пример:

$ cat file1
abc
def
ghi
$ perl -pe 'chomp if eof' file1 > file2
$ cat file2
abc
def
ghi$ 
4 голосов
/ 26 декабря 2011

Как правило, текстовые инструменты Unix более счастливы, если у вас do есть новая строка в конце последней строки в файле.Зачем вам нужно это удалять?

Вы не можете сделать это (насколько я знаю) с помощью awk, но это просто с perl:

perl -e 'undef $/; $_ = <>; s/\R\z//; print'

РЕДАКТИРОВАТЬ: Спустя годы мне пришло в голову, что вы, возможно, имели в виду "как удалить завершающие пустые строки из конца файла";другими словами, вы, возможно, хотели сократить два или более последовательных символов новой строки до одного, только в конце файла.Опять же, это проще всего сделать с perl:

perl -e 'undef $/; $_ = <>; s/\s+\z/\n/; print'

(Это будет zorch произвольный конечный пробел символов, а не только перевод строки. Это почти наверняка то, что вы хотите.)

...