だから、次のファイルがあります。
file1
: 3列SNP Id Geno 1 a AB 2 a AB 3 a BB . . . . . . . . . 1 b AB 2 b BB 3 b AB . . . . . . . . . 1 c AA 2 c AB 3 c AA . . . . . . . . .
次のファイルが必要です。
file2
:遺伝子型を持つIDの数だけSNP Genoa Genob Genoc . . . 1 AB AB AA 2 AB BB AB 3 BB AB AA . . . . . . . . . . . .
ベストアンサー1
このスクリプトは簡潔でも読みやすくもありませんが、機能し、既に公開されているソリューションとは異なり、awk
ヘッダー行も生成します。
sed 'G;s/^SNP.*/SNP/
/^1 /s/ \([^ ]*\) .*SNP[^[:cntrl:]]*/& Geno\1/
s/^\([0-9]*\) [^ ]*\( [AB]*\)\n\(.*\n\1 [AB ]*\)/\3\2/
s/^\([0-9]*\) [^ ]*\( [AB]*\)\(\n\)\(.*\)/\4\3\1\2/
h
$!d' file1 > file2
ユーザーでない場合は、次のように指定されたソリューションを拡張してヘッダー行を生成することもawk
できます。awk
awk '{if ($1==1) h=h" Geno"$2
if ($1!="SNP") g[$1]=g[$1]" "$3}
END {print "SNP"h; for (i in g) print i g[i]}' file1 > file2