Text-Processing

刪除文本文件中的 2 和 3 個換行符,但不刪除 1

  • August 12, 2013

我正在使用 max osx 10.8 進行開發,並且可能對使用哪種工具沒有偏好,sed但這並不重要。

評論後更新: 輸入文件使用 windows 新行,如果這使事情變得複雜,我可以預處理它們以將新行更改為 linux 樣式。

Text

Text



text


text

text

我想要一個這樣的輸出文件

Text

Text
text
text

text

或 perl 變體:

perl -e 'undef $/; $_=<>; s/^\n{2,}//mg; print' < infile

取消設置 ( undef) 欄位分隔符 ( $/)。這使得$_=<>將 STDIN 的內容分配到$_. 然後搜尋並替換 2 個或更多不帶任何內容的換行符 ( s/^\n{2,}//mg;),以及print輸出(這些操作在 上完成$_)。上面搜尋的m選項s///允許換行符(多行)匹配,g並將該模式應用於字元串中的所有出現(而不僅僅是第一個)。

如果它只適用於 2 和 3 新行(而不影響 4 或 5 等),則使用s/^\n{2,3}//mg;

對於 DOS 格式文件:

perl -e 'undef $/; $_=<>; s/^(\r\n){2,}//mg; print' < infile

引用自:https://unix.stackexchange.com/questions/86457