2011-10-26 166 views
1

我想動態地替換IP,但somehwo sed放置word $ IP而不是實際值。使用sed替換

IP=10.50.33.44 
PORT=5774 
sed -i~ 's/https:\/\/10.11.12.13:8443/https:\/\/$IP:$PORT/g' abc.txt 

你能幫我拿出正確的價值嗎?

+1

小技巧:如果你不想逃避'/'字符,你可以使用''%%''。 '''''''''%'字符當然可以是在模式或替換中找不到的東西。 –

回答

3

使用雙引號"變量擴展:

sed -i~ "s/https:\/\/10.11.12.13:8443/https:\/\/$IP:$PORT/g" abc.txt 

@Joachim說,使用不同的分隔符。例如,

sed -i~ "s;https://10.11.12.13:8443;https://$IP:$PORT;g" abc.txt 
0

變化對一個主題:我總是用單引號使用雙引號時包圍SED/AWK/perl的...因爲shell命令有時你絆倒。 我覺得最好是雙引號中的變量:

sed -i~ 's/https:\/\/10.11.12.13:8443/https:\/\/'"$IP"':'"$PORT"'/g' abc.txt 

作爲「帶和大括號」,並作爲我通常在bash命令行組成我的命令交互,關鍵結合MCE(這是按住Alt鍵控制-e在大多數鍵盤上)將在發送之前插入命令。讓你直觀地看到命令實際得到了什麼。