N番目の区切り文字が表示されるたびに新しい行を追加します。

N番目の区切り文字が表示されるたびに新しい行を追加します。

roll.txt改行なしでコンマ区切り形式で次のデータを含むファイルがあります。

'123456789','987651234','129873645','213456789','987612345','543216789','432156789','876543291','213465789','542637819','123456','23456','22234','3456','7890543','34567891,'2345','567'

各行の末尾にカンマ区切り文字が6回表示されるたびに、新しい行を挿入する必要があります。

予想される出力は次のとおりです。

'123456789','987651234','129873645','213456789','987612345','543216789'
'432156789','876543291','213465789','542637819','123456','23456'
'22234','3456','7890543','34567891,'2345','567'

次のコマンドを使用していますが、sed動作しません。

sed 's/[^,]//g'

ベストアンサー1

そしてtrpaste

tr ',' '\n' <infile |paste -sd',,,,,\n'

より読みやすく理解するために:

tr ',' '\n' <infile |paste --serial --delimiters=',,,,,\n'

この場合、話すたびに改行を追加したいときは、N=100場所にいる場合は、99のカンマを入力するのが好きではありません',,,,,,,,,, ... ,\n'。代わりに中printfかっこ拡張を使って作成しましょう。

tr ',' '\n' <infile |paste -sd $(printf '%.1s' ,{1..99})'\n'

~からman paste:

-d, --delimiters=リスト
       TABの代わりにLISTの文字を再利用する

-s, --serial
       ファイルを並列に貼り付けるのではなく、一度に1つずつ貼り付ける

おすすめ記事