【发布时间】: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 环境下不起作用。 我该如何解决这个问题?
【问题讨论】:
当我执行下面的 sed 命令时,它返回了如下表达式错误。
user% sed -e '$-3,$d' sample.csv
sed: -e expression #1, char 2: unknown command: `-'
我想做的是从指定文件中删除最后 4 行。 我发现一些网站介绍了上述方法,但它在我的 Mac OSX 10.9 和 CentOS 环境下不起作用。 我该如何解决这个问题?
【问题讨论】:
这可能对你有用(GNU sed):
sed '1{N;N};N;$d;P;D' file
或更适应:
sed ':a;$d;N;s/\n/&/4;Ta;P;D' file
【讨论】:
如果您想删除文件中的最后四行,请尝试以下命令,
tac file.csv | sed '1,4d' | tac > newfile.csv
【讨论】:
tac file.csv | tail +4 | tac > newfile.csv 应该“更快”。没有 head 的选项(不在我的 AIX 上,但可能在 Linux 和派生版本上存在 head +4)