【问题标题】:Sed command returns expression errorsed 命令返回表达式错误
【发布时间】:2014-07-22 09:48:16
【问题描述】:

当我执行下面的 sed 命令时,它返回了如下表达式错误。

user% sed -e '$-3,$d' sample.csv
sed: -e expression #1, char 2: unknown command: `-'

我想做的是从指定文件中删除最后 4 行。 我发现一些网站介绍了上述方法,但它在我的 Mac OSX 10.9 和 CentOS 环境下不起作用。 我该如何解决这个问题?

【问题讨论】:

标签: linux sed


【解决方案1】:

这可能对你有用(GNU sed):

sed '1{N;N};N;$d;P;D' file

或更适应:

sed ':a;$d;N;s/\n/&/4;Ta;P;D' file

【讨论】:

    【解决方案2】:

    如果您想删除文件中的最后四行,请尝试以下命令,

    tac file.csv | sed '1,4d' | tac > newfile.csv
    

    【讨论】:

    • tac file.csv | tail +4 | tac > newfile.csv 应该“更快”。没有 head 的选项(不在我的 AIX 上,但可能在 Linux 和派生版本上存在 head +4)
    猜你喜欢
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2013-08-07
    • 2013-07-07
    • 1970-01-01
    • 2011-12-01
    • 2012-10-29
    相关资源
    最近更新 更多