簡體   English   中英

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

[英]Linux add new line before and after a matched pattern

我想在HTML文件中的“ <腳本”之前和</ 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 's/<script>/\n&/;s/<\/script>/&\n/' Input_file

假設以下是Input_file:

cat Input_file
<script>
fewvfewvvew
</script>
abcd

然后,在執行代碼之后,我們將獲得以下輸出。

<script>
fewvfewvvew
</script>

abcd

我假設您只是這樣做以使其更易於閱讀,而不是嘗試使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM