【问题标题】:Bash working code to delete first or last line from fileBash工作代码从文件中删除第一行或最后一行
【发布时间】:2012-01-04 07:17:14
【问题描述】:

我看到了sed 示例,但无论我如何写它都不会删除我的第一行。实际上,我做了更多测试,它也不会删除我的第一行,所以我肯定做错了什么:

sed '1d' filename

或最后一行

sed '$d' file name

我希望更改发生在同一个文件中,并且不想要另一个输出文件。 那么请问,删除文件中最后一行的正确方法是什么?

【问题讨论】:

标签: bash line


【解决方案1】:

sed -i '$ d' filename-i 标志位编辑文件。

【讨论】:

  • 这会删除最后一行。要删除第一行,请使用sed -i '1,1d' filename
  • @skolima 第二个地址是多余的;只需1d 就足够了。
【解决方案2】:

给你! 删除第一行(也兼容 BSD/MacOS)

sed '1,1d' file1  >> file1.out

删除最后一行/行

sed '$d' file2  >> file2.out 

【讨论】:

  • 不错的答案。我几乎将两者连接如下:sed "1,1d; $d" file1 > file2
【解决方案3】:

您可以使用--in-place (-i) 开关:

sed -i '$d' filename

来源:man sed

【讨论】:

    【解决方案4】:

    如果您的 sed 支持就地编辑,则为 sed -e '1d' -e '$d' -i filename

    【讨论】:

      【解决方案5】:

      因为没有人给它任何爱:

      ed filename <<'END'
      1d
      $d
      w
      q
      END
      

      【讨论】:

        【解决方案6】:

        给出这个答案,因为sed 没有被标记。

        head -`wc -l test2.cc | awk '{print ($1-1)}'` test2.cc
        

        【讨论】:

        • 这与 BSD 版本的 head (MacOS) 不兼容
        • 读取整个文件两次只是为了让参数传递给head 是......古怪。整个事情可以在 Awk 中完成,一次通过。
        【解决方案7】:

        试试cat file1 | sed "1,1d; $d" &gt; file2

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-20
          • 1970-01-01
          • 2016-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-12
          • 1970-01-01
          相关资源
          最近更新 更多