我用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