ファイルの先頭を指定行数ぶん読み飛ばす
ファイルの先頭から指定行数ぶん取り除きたいことがよくある。
例えば固定行数のヘッダがついており、それを除去したい場合。
tail
コマンドを使えば簡単にできるが、他にどんな方法があるか色々試してみた。
8行のファイルを用意し、最初の3行を読み飛ばす。
$ cat sample.txt 1 2 3 4 5 6 7 8
tailを使う方法
「4行目から表示」という意味で+4
とする(+3
と間違えないように)。
$ tail -n +4 sample.txt 4 5 6 7 8
sedを使う方法
「1〜3行目を削除」とする。
$ sed 1,3d sample.txt 4 5 6 7 8
awkを使う方法
「行番号が3より大きければ表示」とする。
$ awk 'NR>3{print}' sample.txt 4 5 6 7 8
もっと簡単に書ける(print
を省略)。
$ awk 'NR>3' sample.txt 4 5 6 7 8
perlを使う方法
awk
と同じ考え方。
$ perl -ne '$.>3 && print' sample.txt 4 5 6 7 8
commを使う方法
head
で先頭3行を取り出して元ファイルと比べ、共通部分を取り除く。
わざわざこんな書き方をするのは狂気でしかない。
$ head -n 3 sample.txt | comm -2 -3 sample.txt - 4 5 6 7 8
結論
tail
で十分。
ただ、sed
,awk
,perl
を使えば途中の数行読み飛ばすとかできるので汎用性は高い。