grepで発見行の前後も表示する

grepは指定したテキストから文字列を探すコマンドです。
文字列の存在する行だけでなく、オプションを指定することで、発見行の前後の行も表示することができます。

今回は、確認用のテキストとして/usr/share/dict/wordsを使いますが、/usr/share/dict/wordsが存在しない場合は、以下のようにインストールできます。

~$ sudo apt-get install wamerican-large
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
    (省略)
Setting up wamerican-large (7.1-1) ...
Processing triggers for dictionaries-common (1.20.5) ...

テキストがインストールされたか確認します。

~$ ls /usr/share/dict/words 
/usr/share/dict/words
~$ 

では、本題のgrepです。
まずは、発見したい文字列のみを、行番号付きで表示してみます。

 
~$ grep -n ^tomato$ /usr/share/dict/words
91310:tomato
~$

91310行目にtomatoが見つかりました。
次は、tomatoがある行の、前5行表示してみます。

~$ grep -nB5 ^tomato$ /usr/share/dict/words
91305-tomahawk
91306-tomahawk's
91307-tomahawked
91308-tomahawking 
91309-tomahawks
91310:tomato
~$ 

tomahawk〜という文字列が見つかりました。
B5オプションの、「B」はBefore、「5」は5行という意味です。
行番号の後にある:や-は、
:が目的の文字列。
-はBオプションで表示された行を表します。

最後に、tomatoの前後1行を表示してみます。

~$ grep -nC1 ^tomato$ /usr/share/dict/words
91309-tomahawks
91310:tomato
91311-tomato's
~$

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA