文書:
chr1_156186369 chr1_156186369_A_C,T A C,T 33150.29 1/2:0,4,6:10:88:272
chr19_27732257 chr19_27732257_G_C G C 262.29 1/2:1,10,7:18:99:414,167
chrM_2619 chrM_2619_A_G,T A G,T 33023.29 1/2:0,5,5:10:99:293,144,129
chr9_119375271 chr9_119375271_T_A,G T A,G 248.29 1/2:1,11,5:17:99:359,107,113
2列と4列からカンマを削除し、カンマの後の単語の行全体を印刷します。
予想される出力は次のとおりです。
chr1_156186369 chr1_156186369_A_C A C 33150.29 1/2:0,4,6:10:88:272
chr1_156186369 chr1_156186369_A_T A T 33150.29 1/2:0,4,6:10:88:272
chr19_27732257 chr19_27732257_G_C G C 262.29 1/2:1,10,7:18:99:414,167
chrM_2619 chrM_2619_A_G A G 33023.29 1/2:0,5,5:10:99:293,144,129
chrM_2619 chrM_2619_A_T A T 33023.29 1/2:0,5,5:10:99:293,144,129
chr9_119375271 chr9_119375271_T_A T A 248.29 1/2:1,11,5:17:99:359,107,113
chr9_119375271 chr9_119375271_T_G T G 248.29 1/2:1,11,5:17:99:359,107,113
awkを試しましたが、結果が得られませんでした。ここでも同様の種類の質問を読みました。 特定の条件でファイルから行を抽出する方法
ベストアンサー1
awkを使用してください:
awk '{
split ($2,w2,",");
split ($4,w4,",");
for (i in w4) {
print $1,substr(w2[1],0,length(w2[1])-length(w4[i])) w4[i],$3,w4[i],$5,$6;
}}'
列2と列4のコンマの後の値が等しくない場合、エラー処理は発生しません。