使用 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
标志的参数。您可以通过指定 ''
.
给它一个空字符串
我需要在我网站的所有页面(.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
标志的参数。您可以通过指定 ''
.