我有一个文件,foo.txt,包含以下行:

a
b
c

我想要一个简单的命令,导致foo.txt的内容为:

a
b

当前回答

这是目前为止最快和最简单的解决方案,特别是对大文件:

head -n -1 foo.txt > temp.txt ; mv temp.txt foo.txt

如果你想删除顶部行,使用这个:

tail -n +2 foo.txt

这意味着输出行从第2行开始。

不要使用sed从文件的顶部或底部删除行——如果文件很大,它会非常非常慢。

其他回答

OK处理了大量的数据,输出是OK的,但有一个垃圾行。

如果我用管道输出脚本到:

| sed -i '$ d'我将得到以下错误,最终没有输出 Sed:没有输入文件

但是|头-n -1成功了!

echo -e '$d\nw\nq'| ed foo.txt

红宝石(1.9+)

ruby -ne 'BEGIN{prv=""};print prv ; prv=$_;' file
awk "NR != `wc -l < text.file`" text.file &> newtext.file

这段代码可以达到目的。

Mac用户

如果只希望删除最后一行输出而不更改文件本身做

Sed -e '$ d' foo.txt

如果要删除输入文件本身的最后一行

Sed -i " -e '$ d' foo.txt