shell - sed第一行 - tail多行




head命令跳過MAC OSX上最後幾行的文件 (2)

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

我想輸出一個文件的所有行,但跳過終端上的最後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

還有什麼可以做到這一目標?


例如使用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實現都支持它。







osx-lion