When does grep -v succeed?
昨日、簡単なシェルスクリプトを書いていたとき、「grepはマッチする行が1行でもあれば真を返すのであった。はて、grep -vの戻り値はどういう条件で真になるんだろう? また、grep -v -e a -e bなどといったように、条件が複数指定されているときはどうなるのだろう?」と悩んでしまいました。
調べた結果、「grepに-vフラグが指定されているときは、マッチしない行が一行でもあると真を返す」ようです。そこからの結論として、「grepは、-vフラグの指定の有無に関わらず、表示される行がある場合に真を返す」ということになります。
...とここまで時間をかけて検証をしたのですが、マニュアルにきちんと記載されていることに気づきました。マニュアルは機会があるごとに積極的に読まないと結局損をしますね。
EXIT STATUS The grep utility exits with one of the following values: 0 One or more lines were selected. 1 No lines were selected. >1 An error occurred.