sed 命令中替換值爲shell變量
替換基本語法
大家都是 sed 有很多用法,最多就應該是替換一些值了。讓我們先回憶 sed的替換語法。
在sed 進行 替換的時候
sed -i 's/old/new/g' 1.txt
echo "hello old frank" |sed 's/old/new/g'
結果 如下:
hello new frank
sed 中替換使用shell 變量
如果 我new 是一個 shell變量 , 而我想把 old 替換成 new 變量對應的值
export new=good
echo "hello old frank" |sed 's/old/${new}/g'
結果發現 並沒有正常替換, new 變量沒有被正常的解析出來,而是 ${new}
當成了一個要替換的值。
hello ${new} frank
如果想把 new 換成一個 shell 一個變量
export new=good
echo "hello old frank" |sed "s/old/${new}/g"
結果如下:
hello good frank
可以看出 成功替換了。
sed 中 單引號,雙引號 是有區別的.
感覺單引號並不能 解析 shell中的變量,需要用雙引號才能解析。從上面的例子可以看出來。
經過 查閱一些資料
其實 用單引號也是可以的
要在 需要 修改變量的地方 放一對雙引號,然後在雙引號"
外面 在加一對單引號'
例如下面的寫法:
export new=good
echo "hello old frank" |sed 's/old/'"${new}"'/g'
總結
Linux中 有很多有趣好玩的命令,sed 就是其中一個,作爲使用Linux 的老手,今天 被這個小問題,絆了一跤,以後還是多多總結,千萬不要忽略一些小的細節。 所以 以後在 sed 中 替換使用雙引號比較好,畢竟 這樣寫比較簡單,也清晰一點。 如果替換的值就是普通的值,單引號或者說引號都是可以的。如果要替換的值爲 shell 變量的值,則使用雙引號 更好一些吧。