sedコマンドについて
sedコマンドは、置換処理を行うためのコマンド。基本はsed 's/検索対象/置換対象/'のように使う。
bash
# 単一行に対する置換
echo 'abcdef' | sed 's/abc/def/'
# 結果
# defdef
# 複数行に対する置換
echo 'aaa
aaa' | sed 's/a/b/'
## 結果
baa
baa上記例のように、デフォルトでは、「各行で最初に一致した検索対象文字列」のみが置換される。全て置換したい場合は、s/検索対象/置換対象/gとする。
bash
echo 'aaa
aaa' | sed 's/a/b/g'
# 結果
bbb
bbbファイルを指定する場合は以下のように使う。
bash
# 対象ファイル
cat hoge.txt
# 結果
# abcdef
# 置換結果を出力するだけ(ファイル上書きしない)
sed 's/abc/def/g' hoge.txt
# 結果: ファイルを上書きせず、置換結果を出力するだけ
# defdef
# 置換した上でファイルを上書きする
sed -i 's/abc/def/g' hoge.txt
# 結果: ファイルを上書きする
# defdefなお、-iオプションを使用するにあたり、Macの場合は以下のように実行する必要がある。
bash
# バックアップを保存したい場合(バックアップファイルの拡張子を.backに指定)
sed -i '.back' 's/a/b/g' hoge.txt
# 結果
# ・hoge.txtが置換した上で上書き保管される。
# ・hoge.txt.backがバックアップとして保管される。
# バックアップを保存しない場合(バックアップファイルを指定しない)
sed -i '' 's/a/b/g' hoge.txt
# 結果
# ・hoge.txtが置換した上で上書き保管される。
# ・バックアップは保管されない。