使用 find 和 sed 做批处理 find/replace 使用 HTML 标签

Using find and sed to do batch find/replace using HTML tags

我需要在我网站的所有页面(.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 标志的参数。您可以通过指定 ''.

给它一个空字符串