103.7標準
1行のid=12,id=34から、数字列12と34だけを別々の行に表示する。
GNU grepを使用する。
適切なコマンドはどれか。
× 不正解
GNU grepの-oは一致した部分だけを出力する。1行に複数一致があれば、それぞれ別行になる。
詳細解説
誤り
grep -E '[[:digit:]]+' ids.txt一致を含む元の行全体を1回表示する。
元の入力行全体を出力する。
誤り
grep -F '[[:digit:]]+' ids.txt文字クラスと+を固定文字列として探す。
記号列を固定文字として検索する。
誤り
grep -Eo '[[:digit:]]' ids.txt数字を1文字ずつ4行に分けて表示する。
数字を1文字ずつ分離する。
正しい
grep -Eo '[[:digit:]]+' ids.txt+で数字列をまとめ、-oで各一致部分だけを表示する。
正解。数字列ごとに別行で出力する。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s\n' 'id=12,id=34' | grep -Eo '[[:digit:]]+'期待される結果
12
34理解のポイント
- -oは一致部分のみ
- 1行の複数一致を分離
- +で数字列をまとめる
確認時の注意
- 確認環境: GNU grep 3.x / LC_ALL=C
- -oはGNU grepで利用できるオプションとして検証する。
基礎のおさらい
複数一致
-oでは同じ入力行の重ならない一致がそれぞれ別行に出力される。
まとまり
+がないと文字クラスは数字1文字だけへ一致する。
問題IDKP-103-112
確認環境GNU grep 3.x / LC_ALL=C
最終技術確認2026-08-12
誤り・権利侵害を報告