Linuxとコマンドラインの基礎
$ echo "aaa bab" | sed 's/a/x/'文字を置き換える上の sed のコマンドの出力として、正しいものはどれか。
- Axaa bab
- Bxaa bxb
- Cxxx bxb
答えと解説を見る
正解:A. xaa bab
sed の s/置き換える前/置き換えた後/ は、各行で最初に見つかった1か所だけを置き換えます。この行で最初の a は先頭の文字なので、出力は xaa bab です。行の中のすべてを置き換えるには、s/a/x/g のように最後に g(global)を付け、その場合の出力は xxx bxb になります。置き換えの単位は行なので、ファイルに複数の行があれば、g がなくても各行の最初の1か所ずつが置き換わります。
- A. 正しい。g がないので、行の中の最初の a だけが x になります。
- B. 置き換えは語ごとではなく行ごとに行われます。g がなければ、行の中の最初の1か所だけが置き換わります。
- C. s/a/x/g のように g を付けたときの出力です。