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

a
b
c

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

a
b

当前回答

删除zshrc文件中的最后一行,例如:

cat ~/.zshrc
sed -i '' -e '$ d' ~/.zshrc
cat ~/.zshrc

其他回答

删除zshrc文件中的最后一行,例如:

cat ~/.zshrc
sed -i '' -e '$ d' ~/.zshrc
cat ~/.zshrc

在macOS上,head -n -1不起作用,但你可以使用这个命令:

cat file.txt | tail -r | tail -n +2 | tail -r

Tail -r将其输入中的行顺序颠倒 Tail -n +2输出输入中从第二行开始的所有行

红宝石(1.9+)

ruby -ne 'BEGIN{prv=""};print prv ; prv=$_;' file

使用GNU sed:

sed -i '$ d' foo.txt

-i选项在3.95以上的GNU sed版本中不存在,所以你必须使用它作为一个临时文件的过滤器:

cp foo.txt foo.txt.tmp
sed '$ d' foo.txt.tmp > foo.txt
rm -f foo.txt.tmp

当然,在这种情况下,你也可以用head -n -1代替sed。

一样:

在Mac OS X(10.7.4)上,与上面的sed -i命令等价的是

sed -i '' -e '$ d' foo.txt
awk "NR != `wc -l < text.file`" text.file &> newtext.file

这段代码可以达到目的。