※MACターミナル(BSD系)での動作確認です。

スポンサーリンク

grepの-qオプションでターミナル(標準出力)への出力をしないようにする

grepで-qオプションを指定しない場合

grepで-qオプションを指定しないと、grep検索にマッチした行がターミナル(標準出力)に出力されます。

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
001line
002line
003kensaku
004line

grepで"kensaku"の文字列を、下記のように検索します。
 $ grep "kensaku" in.txt 

下記が実行結果になります。検索にマッチした行がターミナル(標準出力)に出力されています。
 $ grep "kensaku" in.txt 
003kensaku

スポンサーリンク

grepで-qオプションを指定した場合

grepで-qオプションを指定する場合には、下記のように書きます。
下記は実行結果でもあるのですが、先程は違って、検索結果がターミナル(標準出力)に出力されていません。

 $ grep -q "kensaku" in.txt 

マッチしたか否かの判定のみしたい場合に使える

grep検索時に、マッチしたか否かの判定のみしたい場合に使えると思っています。
判定だけをして、結果は標準出力に出ないので、不要な出力を減らすこともできます。

下記がサンプルコードになります。grepの戻り値を判定していますが、-qオプションをつけているので、検索結果がターミナル(標準出力)に出力されません。

 $ cat sample.sh 
#!/bin/sh

grep -q "kensaku" in.txt

if [ $? = 0 ]; then
	echo "grep検索にマッチした行があり"
else
	echo "grep検索にマッチした行はなし"
fi

下記が実行結果になります。検索結果がターミナル(標準出力)に出力されていないのが確認できます。
 $ ./sample.sh 
grep検索にマッチした行があり

スポンサーリンク