我想使用以下脚本从HTML中删除脚本调用。
var=$(sed -e '/^<script.*</script>$/d' -e '/.js/!d' testFile.html)
sed -i -e "/$var/d" testFile.html
样本输入文件:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript</title>
<script type="text/javascript" src="script.js" language="javascript">
</script>
<script>
// script code
</script>
</head>
<body>
</body>
</html>
示例输出文件:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript</title>
</script>
<script>
// script code
</script>
</head>
<body>
</body>
</html>
但是,它会出现以下错误。
sed: -e expression #1, char 23: unterminated `s' command
预先感谢
答案 0 :(得分:0)
尝试
root@isadora:~/temp# sed -e '/^<script/,/<\/script>/d' aaaa.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript</title>
</script>
</head>
<body>
</body>
</html>
root@isadora:~/temp#
Att。
答案 1 :(得分:0)
目前尚不清楚为什么将其分解为两个单独的脚本,或者希望变量包含什么。可以使用单个脚本简单地执行此操作。
直接的问题是,如果使用斜杠作为正则表达式分隔符,则不能在正则表达式中使用文字未转义的斜杠。可以使用其他分隔符,也可以反斜杠转义任何文字斜杠。
sed -i -e '\#^<script.*</script>$#d' -e '/\.js/!d' testFile.html
还要注意点之前的反斜杠(正则表达式中未转义的点与任何字符都匹配,因此/.js/
与例如字符串 notjs 匹配)。