我需要在网站上所有页面(包括.html和.htm)的结束标记之前添加一个javascript标记。我使用了另一个问题的指导,但我的命令不起作用:

find . -name "*.htm*" -print | xargs sed -i 's/<\/head>/<script language="javascript" src="https://secure.appprovider.com.js"><\/script><script language="javascript">InitiateCall('767576styisgsjgshshskshjkshkshs');<\/script><\/head>/g'

我得到:
sed: 1: "./index.html": invalid command code .

我认为问题在于正则表达式和我需要转义特定字符?

最佳答案

是的,模式和替换包含/(在https:之后),这将混淆sed
您需要对这些进行转义,但对sed命令使用不同的分隔符可能会使其更具可读性:

's@</head>@<script (etc.) ;</script></head>@g'

另外,一些sed实现(在BSD系统上,如OS X)需要-i标志的参数。您可以通过指定''给它一个空字符串。

关于regex - 使用find和sed使用HTML标签进行批量查找/替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38242181/

10-16 13:51