Bash рабочий код для удаления первой или последней строки из файла - PullRequest
13 голосов
/ 23 ноября 2011

Я видел sed примеры, но как бы я ни писал, это не удалит мою первую строку. На самом деле я провел больше тестов, и моя первая строка тоже не удалится, так что я точно что-то делаю неправильно:

sed '1d' filename

или для последней строки

sed '$d' file name

Я хочу, чтобы изменения происходили в том же файле, и не хочу, чтобы другой выходной файл. Поэтому, пожалуйста, как правильно удалить последнюю строку в моем файле?

Ответы [ 7 ]

15 голосов
/ 23 ноября 2011

sed -i '$ d' filename. Флаг -i редактирует файл на месте.

6 голосов
/ 16 февраля 2013

Вот, пожалуйста! удалить первую строку (также совместим с BSD / MacOS)

sed '1,1d' file1  >> file1.out

удалить последнюю строку / строку

sed '$d' file2  >> file2.out 
4 голосов
/ 23 ноября 2011

Можно использовать переключатель --in-place (-i):

sed -i '$d' filename

Источник: man sed

3 голосов
/ 17 июля 2013

Потому что никто не дает ему никакой любви:

ed filename <<'END'
1d
$d
w
q
END
3 голосов
/ 23 ноября 2011

Если ваш sed поддерживает редактирование на месте, это sed -e '1d' -e '$d' -i filename.

1 голос
/ 23 ноября 2011

Ответ на этот вопрос, поскольку sed не помечен.

head -`wc -l test2.cc | awk '{print ($1-1)}'` test2.cc
0 голосов
/ 16 июля 2013

Попробуйте cat file1 | sed "1,1d; $d" > file2

...