Text-Processing
刪除文本文件中的 2 和 3 個換行符,但不刪除 1
我正在使用 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;
),以及$_
)。上面搜尋的m
選項s///
允許換行符(多行)匹配,g
並將該模式應用於字元串中的所有出現(而不僅僅是第一個)。如果它只適用於 2 和 3 新行(而不影響 4 或 5 等),則使用
s/^\n{2,3}//mg;
對於 DOS 格式文件:
perl -e 'undef $/; $_=<>; s/^(\r\n){2,}//mg; print' < infile