是否可以使用命令删除文件中的最后一行?

是否可以使用命令删除文件中的最后一行?

我意外地在许多服务器上向 /etc/crontab 分发了一行,然后我注意到这一行有一个拼写错误,我需要在所有服务器上更改它。

答案1

另一个选择是修正拼写错误,而不是删除最后一行

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

您应该能够直接编辑较新版本的 cron 的 crontab 文件,因为它会非常精确地检查更改。

答案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' 输入.文件 > 输出.文件

或者

头 -$(( wc -l file | awk '{print $1}'- 1)) 文件

相关内容