2016-07-07 103 views
0

我需要在我网站上所有页面(包括.html和.htm)的结束标记之前立即添加一个javascript标记。我已经使用指导从这里另外一个问题,但我的命令不工作:使用查找和sed使用HTML标记进行批量查找/替换

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 . 

我认为这个问题是与正则表达式做,我需要逃跑的特定字符?

回答

1

是的,图案和替换包含/https:后面的那个),这会混淆sed

您需要转义这些,但使用不同的分隔符为sed命令可使其更易于阅读:

'[email protected]</head>@<script (etc.) ;</script></head>@g' 

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

+0

我还在: sed:1:“./index.html”:无效的命令代码。 – Chris

+0

@Chris啊,'-i'标志需要一个参数。使用''''(单引号中的空字符串)。 – Kusalananda

+0

@Chris答复已更新。在一般情况下,我建议在测试时不要使用'-i'。 – Kusalananda