Sed:如何替换复杂的字符串

时间:2013-09-17 09:07:50

标签: linux replace sed

文件nls_test.pl包含一行:$sel->click("//button[text()='OK']"); 我想替换字符串 //button[text()='OK']使用此字符串

//button[text()='".$sel->get_resource_value("oracle.sysman.resources.CommonResourceBundle", "OK")."']

我试过了:

sed -i".bak" 's#"//button[text()='OK']"#"//button[text()='".$sel->get_resource_value("oracle.sysman.resources.CommonResourceBundle", "OK")."']"#g' nls_test.pl

我得到了:sel: Undefined variable

然后我尝试了:

sed -i".bak" 's#"//button[text()='OK']"#"//button[text()='".\$sel->get_resource_value("oracle.sysman.resources.CommonResourceBundle", "OK")."']"#g' nls_test.pl

结果相同:sel: Undefined variable

你能告诉我怎么做吗?谢谢!

2 个答案:

答案 0 :(得分:1)

试试这个:

sed -i -e "s@//button\[text()='OK'\]\"@//button\[text()='\".\$sel->get_resource_value(\"oracle.sysman.resources.CommonResourceBundle\", \"OK\").\"']@g" nls_test.pl

答案 1 :(得分:1)

这是疯狂的东西,这应该可以工作

x='".\$sel->get_resource_value("oracle.sysman.resources.CommonResourceBundle", "OK")."'
sed -i.bak "s~\$sel->click(\"\(//button\[text()='\)OK\('\)\]\");~\1$x\2]~" file