sedで置換

2022年5月3日

sedで置換

久しぶりにやろうとすると忘れてしまうので備忘録として残しておきたいと思います。

参考:
  ・【Linuxコマンド】sedで文字列を置換する方法
  ・sed コマンド

置換

基本は下記の通りです。


sed [オプション] "s/[置換対象文字列]/[置換後文字列]/g" [対象ファイル]
# sコマンドは正規表現で置換処理をする
# gコマンドはすべてを置換対象とする(後述)

それでは、下記の通りの文字列を持っているファイル「sample.txt」作成してみます。


apple
orange
banana
apple

このファイル内の「a」を「@」に置換してみます。-eはスクリプト追加のオプションです。まずはgコマンドなしで実行してみます。


sed -e "s/a/@/" sample.txt 
@pple
or@nge
b@nana
@pple

上記の通りに「a」が「@」に置換されました。しかし一行のうち、最初「a」しか置換されていません。「b@nana」を「b@n@n@」に置換する場合に必要なのがgコマンドです。それでは今度は下記の通りgを付けて実行してみます。


sed -e "s/a/@/g" sample.txt
@pple
or@nge
b@n@n@
@pple

上記の通りきちんと「b@n@n@」と出力されてのが確認できました。しかしこのままでは出力結果が上書きされません。「-i」オプションを付与してあげる事で、置換結果を上書きすることが出来ます。


sed -i -e "s/a/@/g" sample.txt
cat sample.txt 
@pple
or@nge
b@n@n@
@pple
YouTube

2022年5月3日