103.7標準
names.txtの各行はfamily,given形式で、各フィールドにカンマは含まれない。
GNU sedでgiven familyの順へ並べ替える。
適切なコマンドはどれか。
× 不正解
sedでは括弧で一致部分をキャプチャし、置換文字列の\1、\2で対応するグループを再利用できる。
詳細解説
誤り
sed -E 's/^([^,]+),([^,]+)$/\1 \2/' names.txt空白区切りにはするがfamily givenの元の順序を維持する。
キャプチャした元の順序を維持する。
正しい
sed -E 's/^([^,]+),([^,]+)$/\2 \1/' names.txt第2グループを先、第1グループを後に置いて順序を反転する。
正解。第2、第1の順で再配置する。
誤り
sed 's/^([^,]+),([^,]+)$/\2 \1/' names.txt既定のBREでは括弧と+をこの表記のままグループ化・反復として扱わない。
BREでEREの括弧と+をそのまま使っている。
誤り
sed -E 's/^([^,]+),([^,]+)$/$2 $1/' names.txtsedの後方参照は$1ではなく\1の形式を使う。
sedでは$1形式で後方参照しない。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s\n' 'Sato,Taro' | sed -E 's/^([^,]+),([^,]+)$/\2 \1/'期待される結果
Taro Sato理解のポイント
- 括弧でキャプチャ
- \1は第1グループ
- 置換側で順序変更
確認時の注意
- 確認環境: GNU sed 4.x / LC_ALL=C
基礎のおさらい
キャプチャ
EREの括弧は部分パターンをまとめ、その一致文字列を後で参照できる。
置換文字列
置換側の参照順を変えると、入力のフィールドを並べ替えられる。
問題IDKP-103-115
確認環境GNU sed 4.x / LC_ALL=C
最終技術確認2026-08-12
誤り・権利侵害を報告