用途として、長いファイルサイズのログファイルを分析するときなどに。
やり方
head
コマンドとtail
コマンドを組み合わせる。
# まず開始・終了行数を調べておく (大量ヒットする場合はheadを付けておくと良い)
grep -n '${検索ワード}' ${ファイル名} | head
# 指定範囲でファイルを取得する
head ${ファイル名} -n ${終了行数} | tail -n ${終了行数 - 開始行数 + 1}
実行例
ログファイルに見立てたファイルを作成しておく。
logfile.log
1行目
2行目
3行目
4行目
5行目
6行目
7行目
8行目
9行目
10行目
例えば 3~7行目を取得する 場合、
# 開始・終了行数を検索しておく (今回の例だと検索するまでもないが・・・)
$ grep -n '3行目' logfile.log | head
3:3行目
$ grep -n '7行目' logfile.log | head
7:7行目
# 指定範囲でファイルを取得
# headで 終了行数7 | tailで 終了行数7 - 開始行数4 + 1 → 5
$ head logfile.log -n 7 | tail -n 5
3行目
4行目
5行目
6行目
7行目
見事3~7行目が取得できた🍻
図解
head -n 7 # 上から7行
1 | 1 |
2 | 2 | tail -n 5 # 下から5行
3 | 3 | | 5 |
4 → | 4 | → | 4 |
5 | 5 | | 3 |
6 | 6 | | 2 |
7 | 7 | | 1 |
8
9
10