私はmax osx 10.8で開発しており、どのツールを使用するかを好まないかもしれませんが、それはsed
重要ではありません。
コメント後の更新: 入力ファイルはWindowsの改行を使用します。これにより、状況が複雑になったら、前処理して改行をLinuxスタイルに変更できます。
Text
Text
text
text
text
私はこのような出力ファイルが欲しい
Text
Text
text
text
text
答え1
awk -vRS='\r\n' -vORS='\r\n' '
/./||!++n{if (n==1) print "";print;n=0}
END{if (n==1) print ""}'
答え2
または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