実現したいこと
複数行ある固定長の文字列ファイル(datファイル)の中身を指定桁数の文字ずつにカンマで区切りたい。
例えば下記のような具合です。
01000101000003219790600140008000600000000
201000101001013219720600250008000700090001
この文字列を3,4,5桁ずつに分けたい。
010,0010,10000,03219790600140008000600000000
201,0001,01001,013219720600250008000700090001
前提
発生している問題・エラーメッセージ
sed -i -e "s/^\(.\{1\}\)\(.\{2\}\)\(.\{2\}\)\(.\{12\}\)\(.\{7\}\)\(.\{1\}\)\(.\{1\}\)\(.\{6\}\)\(.\{4\}\)\(.\{4\}\)\(.\{4\}\)/\1,\2,\3,\4,\5,\6,\7,\8,\9,\10,\11,/g" /tmp/test.dat
上記コマンドで下記の文字列をカンマ区切りにしようとしました。
20100010100000 3219790600140008000600000000
20100010100101 3219720600250008000700090001
結果は下記のようになります。
2,01,00,010100000 , ,3,2,197906,0014,20,21,00000000
2,01,00,010100101 , ,3,2,197206,0025,20,21,00090001
9セクション目までは指定した桁数通りに区切れますが、10セクション以降が「20」「21」という数字に変換されてしまいます。
10セクション以上は区切れないのでしょうか。それともコマンドの記載方法に誤りがあるのでしょうか。
試したこと
調べてみると、正規表現の「後方参照」が影響しているというところまでは導けたのですが、修正コードができておりません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
