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

时间:2018-07-18 15:31:26

标签: linux bash

我想在HTML文件中的“ <脚本”之前和标记之后放置换行符。

sed 's/<script/\'$'\n/g'

我尝试了那个,但是删除了“ script”标签。

样本输入:

<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>

我该怎么办?

谢谢

2 个答案:

答案 0 :(得分:0)

由于您尚未发布任何示例,因此无法对其进行测试,因此,请您试着关注并让我知道。

sed 's/<script>/\n&/;s/<\/script>/&\n/' Input_file

让我们说以下是Input_file:

cat Input_file
<script>
fewvfewvvew
</script>
abcd

然后,在执行代码后,我们将得到以下输出。

<script>
fewvfewvvew
</script>

abcd

答案 1 :(得分:0)

我假设您正在这样做只是为了使其更易于阅读,而不是尝试使用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>