2011-07-08 158 views
0

我想用變量替換該值。以下因sed中使用的單引號不起作用。用變量替換文本

#!/bin/sh 
set myvarM='pqr' 
sed 's/:P03:M15/:P02:M1$myvarM/' mychange.txt > new_mychange.txt 

我可以改變sed命令還是應該使用別的東西?

+2

改用'''代替,將允許變量擴展 –

+0

謝謝,第二個問題是set! – shantanuo

回答

2
#!/bin/sh 
myvarM='pqr' 
sed "s/:P03:M15/:P02:M1$myvarM/" mychange.txt > new_mychange.txt 

順便說一下,使更換就地(即不創建一個新的文件,但修改原始文件),這樣做:

sed -i '' "s/:P03:M15/:P02:M1$myvarM/" mychange.txt 

這是說「使用空白作爲增量後綴」 - 即寫出相同的文件名作爲輸入

2
awk -v val="$myvarM" '{sub(/:P03:M15/, ":P02:M1" val); print}' filename 

注意,在Bourne類型的外殼(‘/ bin/sh的’)的set命令設置位置參數。您的第一行將$1設置爲值myvarM='pqr' - myvarM變量將繼續未設置。