6つのカンマごとに2つの区切り文字を追加します。

6つのカンマごとに2つの区切り文字を追加します。

頑張るこの質問を展開してくださいしかし、これを見つけることはできません。

ファイルがあるとしましょう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'

おすすめ記事