sedで置換にコマンドの実行結果を利用する場合
Pocket

先日、sedによる置換にコマンドの実行結果を利用する必要が出たのでその方法について備忘。
sedの処理内でコマンドを実行させる場合は、処理を「'(シングルクォーテーション)」で囲わず、「”(ダブルクォーテーション)」か特に囲まないで、コマンドの実行箇所だけを「`(バッククォート)」で囲んで記述する。

Sponsored Links

$ cat test.hostname
hostname
HOSTNAME
TESTNAME
$
$ # シングルォーテーションだと、置換されない
$ sed -e 's/hostname/`hostname`/g' ./test.hostname
`hostname`
HOSTNAME
TESTNAME
$
$ # ダブルクォーテーションだと、置換される
$ sed -e "s/hostname/`hostname`/g" ./test.hostname
test-centos
HOSTNAME
TESTNAME
$
$ # 処理を囲まなくても置換される
$ sed -e s/hostname/`hostname`/g ./test.hostname
test-centos
HOSTNAME
TESTNAME
$

20150220_000000

 

sedで置換をする際、シングルクォーテーションで囲む例がよくあるけど、それではコマンドが実行されないので注意が必要なようだ。

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。