sedである文字列が含まれる行を指定したファイルの内容に置き換える方法
$ cat source.txt hoge fuga piyo $ cat replace.txt sekisaba aji hotate
例えば、source.txt
で"fuga"が含まれる行をreplace.txt
の内容で置き換えて上書きしたい場合、こうする。
$ gsed -i -e "/fuga/r replace.txt" -e "/fuga/d" source.txt
結果
$ cat source.txt hoge sekisaba aji hotate piyo
コマンドとオプションの解説
-i
オプション : 編集結果を入力ファイルに上書きする-e
オプション : 実行するコマンドにスクリプトを追加するr
コマンド : ファイルを読み込むd
コマンド : パターンに一致する行を削除
ちなみにMac標準のsed
はBSD版のものらしく、-i
オプションの挙動が異なるので上記の結果を得る場合はgnu-sedで実行する必要がある。
$brew install gnu-sed
でインストール可能。
参考 : sed, a stream editor