Skip to content

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が置換した上で上書き保管される。
# ・バックアップは保管されない。