我的目标是简单地将函数调用从一个地方改变到另一个地方,在第一个地方找到的地方递归地进行调用。在这种情况下,mysql_error(
到mysql_error_to_log(
。sed:我怎样才能使这个bash命令工作/工作更好?
在过去,我已经成功地使用下面的grep & sed的语句:
grep -rl connection1\.php ./ | xargs sed -i
's/connection1\.php/account_db_user\.connection\.php/'
所以这次我想类似的东西(只是一个不同的角色,(
,被转义):
grep -rl mysql_error\(./ | xargs sed -i 's/mysql_error\(/mysql_error_to_log\(/'
但我收到此错误:
sed: -e expression #1, char 37: Unmatched (or \(
它似乎告诉我,我试图逃脱(
是不正确的。我在谷歌搜索该sed问题的解释,但没有发现任何真的很清楚。那么这个命令有什么问题?
不要理解为什么(不是一个需要转义的元字符才能在正则表达式中显示为正常字符,认为转义是为了显示正常字符,但它确实可以完成这项工作) – Kzqai 2011-04-14 02:10:50
There是正则表达式和正则表达式,一些正则表达式定义具有'('作为元字符和'\('作为字面括号,有些正好相反。sed regexp使用'('为字面paren和'\('为元字符。perl regexp反过来也是如此 – ndim 2011-04-14 15:00:16
好吧,这很烦人,但是很高兴知道,我必须留意这个问题。 – Kzqai 2011-04-14 15:17:24