次の形式のファイルがあります。
オリジナルフォーマット
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.