行の最初のカンマの後にcsv形式のファイルをフォーマットする方法は?

行の最初のカンマの後にcsv形式のファイルをフォーマットする方法は?

次の形式のファイルがあります。

オリジナルフォーマット

ARX_10/model2,CEECCCCCHHHHSCSCCCSSCCCSCCCSSCSTTTCEEEETTTEECGGGTTTEEEEEETTTTEEEEEECSCCGGGCSCEEEEESSSSSSCEEEEEECCCCSCGGGCCCCBCCSCEECCTTCCEEEEEECCTHHHHHCCCCCCCSTTHHHHHHHHSSCCSTTTTTTTTTSSGGGTTTEEEEEETTTTEEEEEECSCCTTSCCCCCCCSCSSCCCCCCCEECCCSSCCBCCSEEECCTTCEEEEEEECCSSSSSSCCEEECSSSSSSCCCEESSCSSSBCCEECTTSCEEEEEEECTTSSTTSEEEEEESSCGGGCCEEEEEEESSCCCSCCCCCCCCCCSSSHHHHHHHHCCCCSCCCTTTSCCSCCCSTTTCEEEETTTEECGGGTTTEEEEEETTTTEEEEEECSCCGGGCSCEEEEESSSSSSCEEEEEECCCCSCGGGCCCCBCCSCEECCTTCCEEEEEECCTCSEEEEESSCGGGCCEEEEEEESSSCCCCCCCCCCCCHHHHHHHHHHHSSSSCCCCCCSSCCSSCCCSCCCCCCSSCCSSCCCSCCCCCCSSSCCC
ARX_10/model3,CTTSCCCTTTTTSEEEEECGGGSCEEEEECCCSSBCCCSCCCCCTTTCCCCCCCCSCBCCCCCCCCSBCCCCTTCEEEEEECCCCTTCCSCEEEEECCSSSCEEEEETTTEECGGGBTTBCCEECCSSSCCEEEEEESCCGGGSEEEEEEESSTTSSCEEEEEECCCCCCCSEEECCSSCCBCCCCBCCHHHHSSCEEEEEBCSSSCBCCSEETTTEECGGGTTTEEEEEETTTTEEEEEECSCCGGGCSBEEEEESSTTSCCCBCCEEECSSCCCCSCCCCCCCSCBCCCSSCCCCCCCCCCHHHHHSCCEEEEECCSTTCCEEEEEETTSCCSCHHHHHHHHHHHHHSSSCCHHHHHHHHHHHCSSCTTCCCCCCTTTCCTTSCCCCCCCSBCEECCSSCTTTTCCCBCCBCCCSSCCCCSCCEEECCSSCEEEEEEECCSSSSSSCCEEECSSSSSCCCCCCSSCSSSBCCBCCSSSCEEEEEEECCCSGGGCSEEEEESSCGGGCCEEEEEEESSSCCCCCCCCCCCCHHHHHHHHHHHSSSSCCCCCCSSCCSSCCC

上記は、ファイルの内容の最初の2行の例です。最初の2行の後の各行は、提供された例と同じ形式を持ちます。最初のスペースは、処理されたファイルの名前(長さは元のファイルの名前によって異なります(例:ARX、HOXA13、PABPN1、ARX_PA1など))、その後にファイルを区切る文字チェーンが続きます。名前はカンマで区切ります。

私にとって必要なのは、タイトルを引用符で囲み、名前の後の各文字をカンマで区切って、行の末尾にカンマを持たないcsv形式にこの生形式を変換する方法を学ぶことです。

出力例:

"ARX_10/model2","C","E","E","C","C","C","C","C","H","H","H", ...
"ARX_10/model3","C","T","T","S","C","C","C","T","T","T","T", ...

ご協力ありがとうございます。

ベストアンサー1

@Philliposの推薦に基づいて:

sed 'h;s/.*,//;s/./,"&"/g;x;G;s/,.*\n/"/;s/^/"/' inp.csv 

説明する:

パターン空間を2つの部分に分割し、別々に作業してから一緒にマージします。

perl -lpe '$_ = q["] . join(q[","], unpack sprintf "A%dx(A)*", index $_, ",") . q["]' inp.csv

簡単な説明:

° Construct the unpacking format for the input line by finding the location position of the comma, skip the comma from unpack, remaining are unpacked a char each. Then joined with the string ",", finally all enclosed in double quotes. 

おすすめ記事