103.7標準
log.txtから、行頭がWARN:またはERROR:の行だけを抽出する。
INFO:や文字列途中のERROR:は除外する。
適切なEREはどれか。
× 不正解
選択演算子|の対象を括弧でまとめると、^をWARNとERRORの両方へ適用できる。
詳細解説
誤り
^WARN|ERROR:選択の右側に行頭条件が及ばず、途中のERROR:にも一致する。
ERROR側に行頭条件が及ばない。
誤り
^(WARN:ERROR):WARN:ERROR:という連続文字列を要求する。
2語の選択ではなく連続を要求する。
正しい
^(WARN|ERROR):選択肢をグループ化し、その全体を行頭へ固定する。
正解。両候補をまとめて行頭へ固定する。
誤り
^[WARN|ERROR]:ブラケット式は候補文字1文字を選び、単語の選択にならない。
単語ではなく候補文字1文字の集合になる。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s\n' 'WARN: disk' 'ERROR: net' 'INFO: ERROR: old' | grep -E '^(WARN|ERROR):'期待される結果
WARN: disk
ERROR: net理解のポイント
- |は選択
- 括弧は適用範囲を作る
- アンカーの作用範囲に注意
確認時の注意
- 確認環境: GNU grep 3.x / LC_ALL=C
基礎のおさらい
優先順位
グループ化しない選択は左右のパターン全体を分けるため、アンカーの作用範囲に注意する。
ブラケット式との違い
括弧と|は文字列の選択、角括弧は1文字の選択に使う。
問題IDKP-103-106
確認環境GNU grep 3.x / LC_ALL=C
最終技術確認2026-08-12
誤り・権利侵害を報告