0
我想用變量替換該值。以下因sed中使用的單引號不起作用。用變量替換文本
#!/bin/sh
set myvarM='pqr'
sed 's/:P03:M15/:P02:M1$myvarM/' mychange.txt > new_mychange.txt
我可以改變sed命令還是應該使用別的東西?
我想用變量替換該值。以下因sed中使用的單引號不起作用。用變量替換文本
#!/bin/sh
set myvarM='pqr'
sed 's/:P03:M15/:P02:M1$myvarM/' mychange.txt > new_mychange.txt
我可以改變sed命令還是應該使用別的東西?
#!/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
這是說「使用空白作爲增量後綴」 - 即寫出相同的文件名作爲輸入
awk -v val="$myvarM" '{sub(/:P03:M15/, ":P02:M1" val); print}' filename
注意,在Bourne類型的外殼(‘/ bin/sh的’)的set
命令設置位置參數。您的第一行將$1
設置爲值myvarM='pqr'
- myvarM變量將繼續未設置。
改用'''代替,將允許變量擴展 –
謝謝,第二個問題是set! – shantanuo