我想動態地替換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
你能幫我拿出正確的價值嗎?
我想動態地替換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
你能幫我拿出正確的價值嗎?
使用雙引號"
變量擴展:
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
變化對一個主題:我總是用單引號使用雙引號時包圍SED/AWK/perl的...因爲shell命令有時你絆倒。 我覺得最好是雙引號中的變量:
sed -i~ 's/https:\/\/10.11.12.13:8443/https:\/\/'"$IP"':'"$PORT"'/g' abc.txt
作爲「帶和大括號」,並作爲我通常在bash命令行組成我的命令交互,關鍵結合MCE(這是按住Alt鍵控制-e在大多數鍵盤上)將在發送之前插入命令。讓你直觀地看到命令實際得到了什麼。
小技巧:如果你不想逃避'/'字符,你可以使用''%%%''。 '''''''''%'字符當然可以是在模式或替換中找不到的東西。 –