【问题标题】:how can we remove last 7 lines of file in unix [duplicate]我们如何在unix中删除最后7行文件[重复]
【发布时间】:2014-10-18 08:26:27
【问题描述】:

如何使用 unix 命令从 csv 文件中删除最后 7 行。

例如——

abc
bffkms
slds
行开始 1
行开始 2
第 3 行开始
行开始 4
行开始 5
第 6 行开始
第 7 行开始

我想从上面的文件中删除最后 7 行。请建议。

【问题讨论】:

    标签: shell unix awk sed


    【解决方案1】:

    您可以使用head

    head -n-7 file
    

    来自手册页:

     -n, --lines=[-]K
                  print the first K lines instead of the first 10;
                  with the leading '-', print all but the last K lines of each file
    

    喜欢:

    kent$ seq 10|head -n-7
    1
    2
    3
    

    【讨论】:

    • 注意,这在 Mac OSX 上不起作用,因为负值不是 -n 标志的有效参数。
    【解决方案2】:

    tacawk 组合。

    tac | awk  'NR>7' | tac
    

    eks:

    seq 1 10 | tac | awk  'NR>7' | tac
    1
    2
    3
    

    另一个awk 版本

    awk 'FNR==NR {a++;next} FNR<a-7 ' file{,}
    

    这会两次读取文件{,},第一次计算行数,第二次打印除最后一个7 之外的所有行。

    【讨论】:

      猜你喜欢
      • 2013-08-12
      • 2015-02-02
      • 1970-01-01
      • 2016-03-05
      • 2018-07-20
      • 2013-01-12
      • 2010-11-29
      相关资源
      最近更新 更多