我用sed命令掙扎更加特殊字符與另一個許多特殊字符替換字符串。sed命令有許多特殊字符
我有3個.SH文件,我需要替換以下:
文字來代替:
SERVER=`grep ^SERVER= file.properties | tail -1 | awk 'BEGIN { FS="="} { print $2 }'`
替換爲以下:
SERVER=`grep ^SERVER_UI= poller.properties | tail -1 | awk 'BEGIN { FS="="} { print $2 }'`
echo "New SERVER_UI value is ${SERVER}"
if [ "$SERVER" == "" ]
then
SERVER=`grep ^SERVER= poller.properties | tail -1 | awk 'BEGIN { FS="="} { print $2 }'`
echo "Old SERVER value is ${SERVER}"
fi
這是據我自己能夠得到,但它不工作,我會很感激一些幫助:
sed -i.bak 's,SERVER=`grep ^SERVER= file.properties | tail -1 | awk \'BEGIN { FS="="} { print $2 }\'`,SERVER=`grep ^SERVER_UI= file.properties | tail -1 | awk \'BEGIN { FS="="} { print $2 }\'`\necho "New SERVER_UI value is ${SERVER}"\nif [ "$SERVER" == "" ]\nthen\n SERVER=`grep ^SERVER= file.properties | tail -1 | awk \'BEGIN { FS="="} { print $2 }\'`\n echo "Old SERVER value is ${SERVER}"\nfi,' script.sh
如果這個幫助也帶有一些解釋,它將不勝感激。
或只需更換每一個 「^ SERVER =。*」 與 「SERVER = $替換」? – 2013-04-10 11:00:27
這個sed操作是我必須對自動下載的腳本執行多次操作,所以我不能在執行sed命令之前修改原始腳本。 – EKI 2013-04-10 14:31:55
我的意思是,做一個sed,而不是尋找一個複雜的'SERVER = ..........',尋找'SERVER =。*'? (但要小心,因爲它可能會導致替換其他行...這就是爲什麼我說「^ SERVER =。*「,而不是如果你知道這是在一行的開頭(並且只有一次)) – 2013-04-10 15:54:11