nikkie-ftnextの日記

イベントレポートや読書メモを発信

macOSのbash(とzsh)で先頭から何行かを除いて残りの行を出力する

(登壇準備もある状況ですが、簡略版で1日1エントリをつなぎます)

目次

tailコマンドと+でできるよ!

環境情報

macOS 12.6.3のPC(zshがデフォルト)で、bashを立ち上げて動作確認しました。

% bash
$

なお、ここで紹介するtailコマンドの挙動はzshでも有効でした

動作確認に使ったファイルはこちら

$ cat -n tenshi.txt
     12345 使
     6789101112131415161718192021222324

末尾n=10行を表示(いつもの)

$ cat -n tenshi.txt | tail
    15161718192021222324
$ cat -n tenshi.txt | tail -n 10
    15161718192021222324
$ cat -n tenshi.txt | tail -n -10
    15161718192021222324
$ cat -n tenshi.txt | tail -10
    15161718192021222324

man tailを見ていきましょう1

-n number, --lines=number

The location is number lines.

例を交えた説明もあります

Numbers having a leading minus (‘-’) sign or no explicit sign are relative to the end of the input

マイナス符号から始まる数、または符号がない数は、入力の終わりからの相対です

The default starting location is “-n 10”, or the last 10 lines of the input.

デフォルトの開始位置は-n 10、すなわち入力の最後の10行です

-n 10, -n -10, -10 すべて同じ出力となるのですね!

n=10行目以降を表示(Today I learned!)

+を使うとできます!
さらに、指定した行以降末尾まで全行表示されます。
9行除いたことになります

$ cat -n tenshi.txt | tail -n +10
    101112131415161718192021222324
$ cat -n tenshi.txt | tail +10
    101112131415161718192021222324

man tailより

Numbers having a leading plus (‘+’) sign are relative to the beginning of the input

プラス符号から始まる数は、入力の始まりからの相対です

プラス符号は先頭のN行目から(末尾まで)の指定ができるのです!
先頭のN-1行が除かれ、N行目以降が出力されます。

-n +10と単に+10は、コマンドの出力としては同じです。

この学びから導かれることとして、cat tenshi.txttail -n +1 tenshi.txt(1行目から末尾まで出力)は、出力としては同じなんです!

$ tail -n +1 tenshi.txt
お
隣
の
天
使
様
に
い
つ
の
間
に
か
駄
目
人
間
に
さ
れ
て
い
た
件

参考

Linuxのコマンドのmanページを見に行くと、macOSと違って、headが-(マイナス)をサポートしていました!