少输出到文件


1

在bash上,我尝试使用以下命令删除文件的最后3列:

头-n -3文件>文件

但是文件出来是空的。我可以绕过它,但是我想知道是什么原因造成的。

谢谢一群!


澄清:您要删除问题中所述的列或head示例中使用的行?
mnmnc

Answers:



2

您要尝试的是内联替换,如果没有解决方法,这实际上是不可能的。在您的命令中,原始文件将被覆盖,因为发送命令时它已经打开并清除了。

这里有一些想法:

  • 使用临时文件

    head -n -3 file > tmp
    mv tmp file
  • 使用spongefrom中的工具moreutils,该工具吸收所有输入,然后写入文件:

    head -n -3 file | sponge file

0

您可以在Ex模式下使用Vim:

ex -sc '-2,d|x' file
  1. -2, 选择最后3行

  2. d 删除

  3. x 保存并关闭

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.