12

ファイルのすべての行を出力したいのですが、ターミナルで最後の 4 行をスキップします。

UNIX の man ページによると、以下が解決策になる可能性があります。

head -n -4 main.m

男のページ:

-n, --lines=[-]N 最初の 10 行ではなく、最初の N 行を印刷します。先頭に「-」を付けると、各ファイルの最後の N 行を除くすべてを表示します

ここでマニュアルページを読みました。http://unixhelp.ed.ac.uk/CGI/man-cgi?head

しかし、MAC OSx では次のエラーが発生します。

head: 不正な行数 -- -4

この目標を達成するために他に何ができるでしょうか?

4

3 に答える 3

3

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
于 2013-04-25T06:01:41.770 に答える
3

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 実装がそれをサポートしているかどうかはわかりません。

于 2013-04-25T04:59:45.273 に答える