cha*_*aos 12

使用head(删除最后两行):

head -n -2 file
Run Code Online (Sandbox Code Playgroud)

使用sed/ tac(删除最后 2 行):

tac file | sed "1,2d" | tac
Run Code Online (Sandbox Code Playgroud)

tac反转文件,sed删除 ( d) 行12(2可以是任意数字)。

  • `head -n -2` 很棒,但并非所有版本的 head 都支持,尤其是 mac os 附带的 bsd 版本:-( (7认同)
  • 为什么当我尝试将输出重定向回文件(毕竟 OP 要求删除文件的行)时,我只得到一个空白文件:`$ head -n -2 test-file > test-file`当我选择另一个文件名时,`head` 输出会按照我的预期重定向吗?重定向到同一个文件的最佳方法是什么? (4认同)
  • @user1717828 问题是`bash` 首先处理重定向,然后执行命令。处理 `>file` 时,bash 创建(如果不存在)一个空文件,否则它会被截断。`head` 然后什么都不打印,因为它读取的文件是空的。你必须通过一个临时文件。`head -n -2 文件 >tmp && mv tmp 文件`。顺便说一句:所有允许“就地编辑”的工具(如`sed -i`、`gawk -i inplace`、`perl -i`)完全一样。 (4认同)