我想在终端上输出文件的所有行,但跳过最后 4 行。
根据 UNIX 手册页,以下可能是一个解决方案。
head -n -4 main.m
手册页:
-n, --lines=[-]N 打印前 N 行而不是前 10 行;使用前导“-”,打印每个文件的最后 N 行以外的所有行
我在这里阅读了手册页。http://unixhelp.ed.ac.uk/CGI/man-cgi?head
但在 MAC OSx 上,我收到以下错误。
head: 非法行数 -- -4
还可以做些什么来实现这个目标?
我想在终端上输出文件的所有行,但跳过最后 4 行。
根据 UNIX 手册页,以下可能是一个解决方案。
head -n -4 main.m
手册页:
-n, --lines=[-]N 打印前 N 行而不是前 10 行;使用前导“-”,打印每个文件的最后 N 行以外的所有行
我在这里阅读了手册页。http://unixhelp.ed.ac.uk/CGI/man-cgi?head
但在 MAC OSx 上,我收到以下错误。
head: 非法行数 -- -4
还可以做些什么来实现这个目标?
GNU 版本head支持负数。
brew install coreutils
ghead -n -4 main.m
Python单线:
$ cat foo
line 1
line 2
line 3
line 4
line 5
line 6
$ python -c "import sys; a=[]; [a.append(line) for line in sys.stdin]; [sys.stdout.write(l) for l in a[:-4]]" < foo
line 1
line 2
使用awk例如:
$ cat file
line 1
line 2
line 3
line 4
line 5
line 6
$ awk 'n>=4 { print a[n%4] } { a[n%4]=$0; n=n+1 }' file
line 1
line 2
$
它可以简化为,awk 'n>=4 { print a[n%4] } { a[n++%4]=$0 }'但我不确定是否所有 awk 实现都支持它。