我的目標是簡單地將函數調用從一個地方改變到另一個地方,在第一個地方找到的地方遞歸地進行調用。在這種情況下,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