よくあるやつだがたまにやろうとするとぱっと出てこなかったので残しておく
たとえば
lintの結果のテキストファイルをさっと集計したいとかそういった場合
最初の3行は警告とは関係ない説明とかコマンド詳細などが表示されていて
最後の3行はSummaryが表示されているというような場合
中身を抜き出してさっと集計するためには、まず最初と最後の固定情報を削っておきたい
サンプル
理解しやすくするために、行頭に行数を載せている
- sample.txt
$ cat sample.txt 1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii 10 jjj
3行目以降を表示
$ tail -n +3 sample.txt 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii 10 jjj
下から3行目以前を表示
$ head -n -3 sample.txt 1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg
最初と最後の数行を除いた中身を表示
結論はここ
- 上から3行目以降、下から3行目までは除いたテキストを表示
$ tail -n +3 sample.txt | head -n -3 3 ccc 4 ddd 5 eee 6 fff 7 ggg
おまけ
-nオプションを試す
やっているうちによくわからなくなってきてしまったので、いくつかパターンを試してみた
$ tail -n +3 sample.txt 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii 10 jjj
$ tail -n -3 sample.txt 8 hhh 9 iii 10 jjj
$ head -n +3 sample.txt 1 aaa 2 bbb 3 ccc
$ head -n -3 sample.txt 1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg
イメージ
おわり
tail, headコマンドで最初と最後の数行を除いて中身を表示した
こういうことやりたくなるケースはぼちぼちありそうだなって感じなので覚えておく