1.03.4基礎
messages.txtから、文字列[ready]*を記号も含めてそのまま検索する。
正規表現として解釈させず、エスケープの列挙も避ける。
適切なコマンドはどれか。
× 不正解
grep -Fはパターンを正規表現ではなく固定文字列として検索する。fgrepも同等の旧来名である。
詳細解説
誤り
grep '[ready]*' messages.txt角括弧と*が基本正規表現として解釈され、固定文字列検索にならない。
誤り。[ready]が1文字の集合、*がその0回以上の繰り返しとなり、文字列[ready]*そのものを示さない。
正しい
grep -F '[ready]*' messages.txt-Fがパターン全体を固定文字列として扱う。
正しい。-Fは角括弧や*を通常文字として扱い、対象文字列をそのまま検索できる。
誤り
grep -E '[ready]*' messages.txt拡張正規表現でも角括弧と*はメタ文字として解釈される。
誤り。EREでも角括弧と*は正規表現記号であり、固定文字列にはならない。
誤り
grep -w '[ready]*' messages.txt-wは単語境界を制御するが正規表現解釈を無効にしない。
誤り。-wは一致範囲の境界条件を加える機能で、パターン内部の正規表現解釈を止めない。
実際に確かめる
一時的な検証環境で実行できる例です。
printf 'state=[ready]*\nstate=ready\n' | grep -F '[ready]*'期待される結果
state=[ready]*理解のポイント
- -Fは固定文字列
- メタ文字を無効化
- fgrepと同等
確認時の注意
- 確認環境: GNU grep 3.x
基礎のおさらい
固定文字列検索
正規表現が不要な場合は-Fを使うと、特殊記号を含む入力を簡潔に扱える。
fgrep
fgrepはgrep -F相当の旧来コマンド名であり、役割の理解は同じである。
問題IDKL-101-489
確認環境GNU grep 3.x
最終技術確認2026-08-13
誤り・権利侵害を報告