因此,我需要编辑一堆html文件。.我以前曾批量使用sed,但是我遇到的问题是,我要定位和替换的文本字符串都包含撇号。尽管您可以通过选择所需的内容来简单地更改sed的定界符,但显然您无法对命令的开头和结尾的单引号进行相同的处理...还有另一种方法吗?
我正在寻找'_blank');“ />并做其他事情。.使用@作为分隔符,我几乎可以更改任何部分,但是我想为其添加更多参数,因此需要能够有没有办法做到这一点,或者我需要寻找另一个命令吗?同样,许多文件都希望不要手动执行。
谢谢,
151
编辑:由于这些站点支持的整个“不要求为您做的事情”方面,我并没有确切说明我想做的事情,但是实际上我被要求发表评论,所以本质上是...。
期待改变
ALIGN=CENTER '_blank');" />
到:
ALIGN=CENTER '_blank', 'width=100%'); />
我尝试过的
find . -name "*.php" -print | xargs sed -i "s@'_blank');" />@'_blank', 'width=100%'); />@g
当然,在测试中我没有使用* .php,我只是在一个特定文件上进行测试。
您的命令应该是
find . -name '*.php' -exec sed -i 's/);"/, \'width=100%');/' {} \;
不需要使用管道xargs
:该-exec
选项将完全为您完成;也-print
没有必要。
该'...'
分离保护文本从外壳被改变; 出于这个原因,您需要转义(即,以'
反斜杠开头\'
)中的撇号来告诉sed
:看,这不是s
模式的结尾,而是文字字符,应完全视为模式的一部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句