[Linux]テキストファイルから中間行をカットして切り出す(head, tail)

問題です

file.txtという大きめのテキストファイルから、中間部分の1000行目から1234行目までを切り取って抜き出すにはどうしたらいいでしょうか?

回答1
普通にやるとこうです。

$ head -n 1234 file.txt | tail -n 235
しかしこのやり方は簡単ではない。

まず、自分で引き算をしないといけない。
これだけでも難易度が高いのに、、引き算をしたあとに1を足すという超難題をクリアしないといけない。
( 1234 - 1000 + 1 = 235 )
ものすごい難易度の高いコマンドです。
東大入試に出てきそうなレベルです。

このようなコマンドは覚えられるわけもなく、あなたはこれをやろうとするたびにheadとtailのオプションの使い方について毎回ググることになるでしょう。(もしくはmanとにらめっこするでしょう)

そこで次のようなやり方を提案します。

回答2
$ START=1000
$ END=1234
$ head -n $END file.txt  | tail -n $(($END - $START + 1))
引き算しなくてよくなりました!

しかしこれでもまだ覚えられそうにありません。

シェルスクリプト化してしまいましょう。

回答3
middle.sh
#!/bin/bash
head -n $3 $1 | tail -n $(($3 - $2 + 1))
実行します。
$ ./middle.sh file.txt 1000 1024
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
Enjoy!
カテゴリ:

人気記事