ファイルの指定行以降を表示したい
テキストファイルの先頭N行をスキップして、N行目以降を表示したい。
例えば以下のような10行のファイルがある。
1
2
3
4
5
6
7
8
9
10
このファイルから5行目以降を表示したい。
5
6
7
8
9
10
tail -n +N
tailコマンドに-n +Nオプションをつけると、N行目以降の内容を表示する。
$ tail -n +5 numbers.txt
5
6
7
8
9
10
-n +5オプションで5行目以降(5行目から最後まで)を表示している。
末尾を表示する通常のtail
通常のtailコマンドは末尾から指定した行数を表示する。
$ tail -n 5 numbers.txt
6
7
8
9
10
-n 5オプション(または-5)で末尾5行を表示している。
+記号の有無の違い
-nオプションでの+記号の有無で動作が変わる。
-n N(または-n -N): 末尾N行を表示-n +N: N行目以降を表示
# 末尾3行を表示
$ tail -n 3 numbers.txt
8
9
10
# 3行目以降を表示
$ tail -n +3 numbers.txt
3
4
5
6
7
8
9
10
CSVファイルのヘッダーをスキップ
CSVファイルの1行目のヘッダーをスキップしてデータ行のみを処理する場合に便利である。
Name,Age,City
Alice,25,Tokyo
Bob,30,Osaka
Charlie,28,Kyoto
# ヘッダー行をスキップして2行目以降を表示
$ tail -n +2 data.csv
Alice,25,Tokyo
Bob,30,Osaka
Charlie,28,Kyoto
ヘッダーをスキップした後、パイプで他のコマンドに渡してデータ処理を行える。
# ヘッダーをスキップしてカンマ区切りでカラムを取得
$ tail -n +2 data.csv | cut -d',' -f2
25
30
28
head との組み合わせ
headとtailを組み合わせると、ファイルの特定の範囲の行を抽出できる。
# 3行目から5行目を表示(3行目以降を取得してその最初の3行を表示)
$ tail -n +3 numbers.txt | head -n 3
3
4
5
tail -n +3で3行目以降を取得し、head -n 3でその最初の3行を表示している。
標準入力からの使用
パイプでコマンドの出力結果から指定行以降を表示できる。
$ seq 1 20 | tail -n +11
11
12
13
14
15
16
17
18
19
20
seq 1 20で1から20までの数値を生成し、tail -n +11で11行目以降を表示している。
\第一線のプログラマーの行動原理を学べる!/
