要注意 grep

image_printPrintable Format

コマンドライン上で気軽に使うには問題ないが,シェルスクリプト内で使用する時は要注意.(考えてみれば,シェルスクリプト内で grep を使用することがほとんどなくなってきた…)

典型的な問題

$ cat DATA
LINE1
LINE2
LINE3

DATA というファイルの内容に LINE2 という内容が含まれていたらある「処理」を行うという動作をするプログラムは,以下のように書くことはできる.

grep -q LINE2 DATA && <処理>

が,DATA が以下のような内容になっても,「処理」が走ってしまう.(これはほとんどの場合,そうなっては欲しくないだろう)

$ cat DATA
LINE1
LINE8
LINE16
LINE24
LINE32

データによってプログラムの挙動が意図しないものになってしまう典型となるので,grep は便利だがここでは使うべきではない.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です