head命令跳过MAC OSX上的最后几行文件

时间:2013-04-25 04:40:55

标签: shell command-line terminal osx-lion

我想输出文件的所有行,但是在终端上跳过最后4行。

根据UNIX手册页,以下内容可能是一个解决方案。

head -n -4 main.m

MAN页面:

  

-n, - lines = [ - ] N.             打印前N行而不是前10行;带头 -             ' - ',打印除了每个文件的最后N行之外的所有行

我在这里阅读了手册页。 http://unixhelp.ed.ac.uk/CGI/man-cgi?head

但是在MAC OSx上我得到了以下错误。

  

头:非法行数 - -4

为实现这一目标还有什么可以做的?

3 个答案:

答案 0 :(得分:8)

head的GNU版本支持负数。

brew install coreutils
ghead -n -4 main.m

答案 1 :(得分:3)

Python one-liner:

$ 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

答案 2 :(得分: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实现都支持它。