sed 命令中替換值爲shell變量

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 變量的值,則使用雙引號 更好一些吧。

參考文檔

linux中sed中用s 替換中遇到的問題

分享快樂,留住感動. 2020-04-29 22:53:24 --frank
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章