我想在 HTML 文件中的“<script”之前和 </script> 标签之后放置换行符。
sed 's/<script/\'$'\n/g'
我试过了,但它删除了“脚本”标签。
示例输入:
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>JavaScript Ders 2</title> <script type="text/javascript" src="script.js" language="javascript"></script> <script type="text/javascript" src="script.js" language="javascript"></script> <script></script> </head><body> <script type="text/javascript" src="script.js" language="javascript"></script> </body></html>
示例输出:
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>JavaScript Ders 2</title>
<script type="text/javascript" src="script.js" language="javascript">
</script>
<script type="text/javascript" src="script.js" language="javascript">
</script>
<script>
</script>
</head><body>
<script type="text/javascript" src="script.js" language="javascript">
</script>
</body></html>
我必须做什么?
谢谢
最佳答案
我假设您这样做只是为了使其更易于阅读,而不是尝试使用 sed 格式化 HTML...
在<script
之前添加换行符和 </script
(假设您的 sed 版本理解 \n
):
sed -E 's|</?script|\n&|g' file
匹配</?script
( /?
使 /
可选)并替换为换行符,然后是完整匹配项 &
.
它与您问题中的输出不完全匹配,因为您似乎想要将每个打开/关闭 <script>
在自己的行上标记,而不仅仅是插入行:
$ sed -E 's|</?script|\n&|g' file
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>JavaScript Ders 2</title>
<script type="text/javascript" src="script.js" language="javascript">
</script>
<script type="text/javascript" src="script.js" language="javascript">
</script>
<script>
</script> </head><body>
<script type="text/javascript" src="script.js" language="javascript">
</script> </body></html>
关于Linux 在匹配模式前后添加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51405860/