Linux 在匹配模式前后添加新行

标签 linux bash

我想在 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/

相关文章:

Linux:动态更新后台进程的变化

linux - 为 2 个内核分区 Beaglebone 内部 mmc

python - 在Linux上使用Python模块编译GEOS 3.6.2

linux - 运行 Bash 脚本时找不到命令,但直接运行命令时有效

bash - 将简单的 shell 脚本作为 cronjob 运行

linux - 在 FreeBSD v8.1 上/proc/cpuinfo 是什么?

linux - 如何在 Linux/Unix 上永久设置 $PATH

bash - bash 函数调用到底有多贵?

python - 在Windows上从Bash传递路径到Python会自动尝试将其转换为绝对路径-是否可以禁止该路径?

php - Codeigniter $query->list_fields() 在具有相同 php 代码的 LINUX 上不返回任何内容