mtk*_*mtk 74 sed text-processing
我sed 用来快速删除具有特定位置的行
sed '1d'
sed '5d'
Run Code Online (Sandbox Code Playgroud)
但是,如果我想删除文件的最后一行并且我不知道行数(我知道我可以使用wc和其他一些技巧来获得它)怎么办。
目前,使用一种解决方法 withhead并tail结合 withwc来做到这一点。这里有什么快速曲折吗?
h3r*_*ler 122
在 sed 中$是最后一行,所以要删除最后一行:
sed '$d' <file>
Run Code Online (Sandbox Code Playgroud)
Gur*_*uru 39
$ 最后一行:
sed '$d' file
Run Code Online (Sandbox Code Playgroud)
Ema*_*erg 15
cat file.txt | head -n -1 > new_file.txt
请注意,似乎取决于最后一行file.txt(如果以EOF, 或\n然后结尾EOF),在此命令之后的行数new_file.txt可能与 相同(与file.txt)相同(没有 时会发生这种情况\n) - 在任何情况下,最后一行的内容被删除。
另请注意,您必须使用第二个(中间)文件。如果你 cat 并重定向到同一个文件,你会删除它。
sed '$d' ~/path/to/your/file/name
Run Code Online (Sandbox Code Playgroud)
sed -i '' -e '$ d' ~/path/to/your/file/name
Run Code Online (Sandbox Code Playgroud)
head --lines=-1. 我首先在 SLES11SP2 系统 (coreutils-8.12-6.23.1) 的手册页中偶然发现了这种可能性
tail并且head是coreutils-rpm 的一部分(至少对于基于 rpm 的系统而言)。
根据 coreutils 的变更日志,从 coreutils-version 5.0.1 开始支持此语法
坏消息:根据 RH5-man-page 这个选项没有被描述
好消息:它适用于 RH5(所以在您的情况下:它适用 - 至少适用于当前版本的 RH5)。
rpm -q coreutils 向我展示(在 CentOS 5.8 上):coreutils-5.97-34.el5_8.1
不知道是不是RH5.5。已经有支持它的 coreutils-version。但是 5.5 无论如何都有 EoLed。