【发布时间】:2013-04-05 03:06:15
【问题描述】:
我正在尝试运行一个脚本来替换大量 .php 文件中的一段代码。我需要更换:
`popupOpen(\'/home/open.php?c='.urlencode($row['id']).'&s=\', 650, 600)`
用这个:
`popupOpen(\'/home/open.php?c='.urlencode($row['id']).'&s=\', 1024, 750)`
我使用的命令是:
find . -name "index.php" -print | xargs sed -i "s/popupOpen(\\\'\/home\/open.php?c='.urlencode\($row\['id']\).'\&s=\\\', 650, 600)/popupOpen(\\\'\/home\/open.php?c='.urlencode\($row\['id']\).'\&s=\\\', 1024, 750)/g"
我似乎无法正确逃避它。我错过了什么?
【问题讨论】:
-
你说了很多文件,但你只是在寻找
index.php -
我将运行该命令的地方有大约 120 个文件夹,每个文件夹都有 index.php。
-
在我看来您只需将 650 替换为 1024 并将 600 替换为 750
-
我可以缩短命令以使其更简单,但我想知道究竟需要转义什么,以防将来必须运行可能更复杂的类似命令。
-
你还需要转义
$,否则$row会被shell扩展(可能是空字符串)......也许你应该考虑将sed脚本放入一个文件中用sed -f script调用它。让逃跑更容易。