1.03.2基礎
input.txtの各行でerrorという文字列をwarnへ置換して標準出力へ表示する。
1行に複数回現れるerrorもすべて置換し、元ファイルは変更しない。
適切なコマンドはどれか。
× 不正解
sedのs/OLD/NEW/gは各行の一致をすべて置換し、-iを付けなければ結果を標準出力へ送る。
詳細解説
誤り
sed 's/error/warn/' input.txt各行の最初の一致だけを置換する。
誤り。gがないsコマンドは各行で最初のerrorをwarnへ変え、2回目を残す。
誤り
tr 'error' 'warn' < input.txt文字集合を1文字ずつ変換し、文字列単位の置換にならない。
誤り。trはeをw、rをaのように文字単位で対応させ、単語errorを単語warnへ置換しない。
誤り
cut -d error -f1 input.txtcutの区切り文字は1文字で、置換処理も行わない。
誤り。cutの-dは1文字区切り用で、入力文字列の置換処理ではない。
正しい
sed 's/error/warn/g' input.txtsコマンドのgフラグで各行のすべての一致を置換する。
正しい。gフラグが各行の2回目以降も含むすべてのerrorへ置換を適用する。
実際に確かめる
一時的な検証環境で実行できる例です。
printf 'error then error\n' | sed 's/error/warn/g'期待される結果
warn then warn理解のポイント
- sはsubstitute
- gは行内の全一致
- 既定は標準出力
確認時の注意
- 確認環境: GNU sed 4.x / 標準入力
基礎のおさらい
ストリーム編集
sedは入力を行単位で読み、編集命令の結果を既定で標準出力へ送る。
元ファイル変更
GNU sed -iはファイルを更新するため、確認なしに付けず、必要ならバックアップ方針を決める。
問題IDKL-101-459
確認環境GNU sed 4.x / 標準入力
最終技術確認2026-08-13
誤り・権利侵害を報告