頑張るこの質問を展開してくださいしかし、これを見つけることはできません。
ファイルがあるとしましょうroll.txt
。
echo "'123456789','987651234','129873645','213456789','987612345','543216789','432156789','876543291','213465789','542637819','123456','23456','22234','3456','7890543','34567891,'2345','567'" >> roll.txt
次のsedコマンドを使用すると、6つのカンマごとに改行文字を挿入できます。
sed 's/,/,\n/6; P; D' roll.txt
'123456789','987651234','129873645','213456789','987612345','543216789',
'432156789','876543291','213465789','542637819','123456','23456',
'22234','3456','7890543','34567891,'2345','567'
しかし、カンマ6個ごとに改行2個を入れようとすると、次のようになります。
sed 's/,/,\n\n/6; P; D' roll.txt
'123456789','987651234','129873645','213456789','987612345','543216789',
'432156789','876543291','213465789','542637819','123456','23456',
'22234','3456','7890543','34567891,'2345','567'
代わりに、6番目のカンマの後に2つの改行が表示されます。4つ12番目のカンマの後の改行文字です。なぜ? 6つのカンマごとに2つの改行を取得する方法は?
ベストアンサー1
Steeldriverのコメントに記載されているように、各サイクルに2行を追加しますが、1行だけ印刷して削除します。長いシーケンス(3、7、15本の空白行を含む)では、状況はさらに悪化します。
したがって、最初の行が空の場合は交換しないでください。
sed '/^\n/!s/,/,\n\n/6; P; D'