Awk 基于列对行进行分组
我试图根据第1列对下面的结果进行分组,但无法这样做 输入:Awk 基于列对行进行分组,awk,Awk,我试图根据第1列对下面的结果进行分组,但无法这样做 输入: rs10923724 C TBX15 intergenic rs10923724 T WARS2 intron rs72705210 G AMPD2 upstream rs72705210 A GSTM4 downstream 期望输出: rs10923724 C,T TBX15,WARS2 intergenic,intron rs72705210 G,A AMPD2,GSTM4 upstream,downstream 我尝试过的代
rs10923724 C TBX15 intergenic
rs10923724 T WARS2 intron
rs72705210 G AMPD2 upstream
rs72705210 A GSTM4 downstream
期望输出:
rs10923724 C,T TBX15,WARS2 intergenic,intron
rs72705210 G,A AMPD2,GSTM4 upstream,downstream
我尝试过的代码:
awk '{ A[$1]=A[$1]", "$2} END { for(X in A) print X"\t",substr(A[X],=2) }'
输出:
rs10923724 C,T
rs72705210 G,A
$awk'{k=$1;
(i=2;我感谢你的帮助@karakfa!
$ awk '{k=$1;
for(i=2;i<=NF;i++) a[k,i]=(k in ks)?a[k,i]","$i:$i;
ks[k]}
END {for(k in ks)
{printf "%s", k FS;
for(i=2;i<=NF;i++) printf "%s", a[k,i] (i==NF?ORS:FS)}}' file
rs72705210 G,A AMPD2,GSTM4 upstream,downstream
rs10923724 C,T TBX15,WARS2 intergenic,intron