簡體   English   中英

使用bash,sed或awk將三行或更多行改為兩行

[英]Change three or more empty lines into two using bash, sed or awk

假設我們有一個包含單詞和多個空行的字符串。 例如

"1\n2\n\n3\n\n\n4\n\n\n\n2\n\n3\n\n\n1\n"

我想使用bash, sedawk將三個或更多的空行“縮小”為兩個,以獲取字符串

"1\n2\n\n3\n\n4\n\n2\n\n3\n\n1\n"

有人知道嗎?

awk

$ awk -v RS= -v ORS='\n\n' 1 file

如果數據不是太龐大,並且您使用了GNU sed ,請使用sed -z使其適用於單個以null終止的記錄,而不是每行一個\\n終止的記錄:

sed -z 's/\n\n\n\n*/\n\n/g'

或使用擴展的正則表達式:

sed -zr 's/\n{3,}/\n\n/g'

如果可以接受perl,

perl -00 -lpe1

應該這樣做。 它讀取並輸出整個段落,這具有將2條以上換行符標准化為\\n\\n的副作用。

暫無
暫無

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

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