我试图在服务器上搜索名为index.php的所有文件,然后使用xargs运行sed替换那些文件中的一些文本。
我要查找的行是:
echo '<form method="get" class="search_form" action="'.$siteUrl.'">';
更换后,它应如下所示:
echo '<form method="get" class="search_form" action="/">';
因此,我真的只需要更改'.$siteUrl.'
为一个/
但是,当我尝试从SSH提示符下运行此命令时(我认为是正确的):
find . -name "index.php" -print | xargs sed -i 's/\'\.\$siteUrl\.\'/"/"/g'
它只是使我进入>的提示,并且不再进行任何操作...
我还尝试在单个文件上使用相同的sed命令,该命令执行相同的操作。有人可以指出我哪里出了问题吗?
/
也用作替换定界符。像这样逃避它:\/
'
-print
是的默认操作find
,可以跳过。试试这个:
find . -name "index.php" | xargs sed -i "s/'\.\$siteUrl\.'/\//g"
或对sed使用不同的分隔符,例如,:
并在以下代码之前删除转义符/
:
find . -name "index.php" | xargs sed -i "s:'\.\$siteUrl\.':/:g"
哦,保存已编辑文件(-i.bak
)的备份始终是一个好主意:
find . -name "index.php" | xargs sed -i.bak "s:'\.\$siteUrl\.':/:g"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句