Можно ли удалить последнюю строку в файле с помощью команды?

Можно ли удалить последнюю строку в файле с помощью команды?

Я случайно распространил строку в /etc/crontab на многих серверах и заметил, что в этой строке есть опечатка, и мне нужно исправить ее на всех серверах.

решение1

Другой вариант — исправить опечатку, а не просто удалить последнюю строку.

sed -i '$ s/typotext/correcttext/ /var/spool/cron/user

Вы сможете редактировать файлы crontab напрямую в более новых версиях cron, поскольку он проверяет наличие изменений очень быстро.

решение2

Если ваш sed поддерживает редактирование на месте, то,

sed -i '$d' file

в противном случае вам придется использовать составную команду, например,

cat file | sed '$d' > newfile; mv newfile file

решение3

использоватьhead

user@host$ cat <<EOF > test.txt
1
2
3
4
EOF
user@host$ head -n -1 test.txt | sponge test.txt
user@host$ cat test.txt
1
2
3
user@host$

решение4

Ответ можно найти в статье на форуме unix.com:

http://www.unix.com/shell-programming-scripting/25027-delete-last-line.html

sed -e '$d' входной.файл > выходной.файл

или

файл head -$(( wc -l file | awk '{print $1}'- 1))

Связанный контент