※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検索にマッチした行があり