使用awk的类似行的和值
从下面的例子中,我想对使用awk的类似行的和值,awk,Awk,从下面的例子中,我想对目标和miRNA相似的行的分数求和:请参见下文 Target miRNA Score NM_198900 hsa-miR-423-5p -0.244 NM_198900 hsa-miR-423-5p -0.6112 NM_1989230 hsa-miR-413-5p -0.644 NM_1989230 hsa-miR-413-5p -0.912 输出:
目标
和miRNA
相似的行的分数求和:请参见下文
Target miRNA Score
NM_198900 hsa-miR-423-5p -0.244
NM_198900 hsa-miR-423-5p -0.6112
NM_1989230 hsa-miR-413-5p -0.644
NM_1989230 hsa-miR-413-5p -0.912
输出:
NM_198900 hsa-miR-423-5p -0.8552
NM_1989230 hsa-miR-413-5p -1.556
像这样:
awk '{x[$1 " " $2]+=$3} END{for (r in x)print r,x[r]}' file
当它看到每一行时,它会将第三个字段($3
)添加到一个数组x[]
,通过在字段1和字段2之间加一个空格进行索引。最后,它将打印x[]
的所有元素
按照@jaypal的建议,您可能更喜欢保留标题行(NR==1)并使用制表符作为输出字段分隔符
awk 'NR==1{OFS="\t";print;next} {x[$1 OFS $2]+=$3} END{for (r in x)print r,x[r]}' file
像这样:
awk '{x[$1 " " $2]+=$3} END{for (r in x)print r,x[r]}' file
当它看到每一行时,它会将第三个字段($3
)添加到一个数组x[]
,通过在字段1和字段2之间加一个空格进行索引。最后,它将打印x[]
的所有元素
按照@jaypal的建议,您可能更喜欢保留标题行(NR==1)并使用制表符作为输出字段分隔符
awk 'NR==1{OFS="\t";print;next} {x[$1 OFS $2]+=$3} END{for (r in x)print r,x[r]}' file
你的文件分类了吗?可以排序吗?你可以排序,是的。你的文件排序了吗?可以排序吗?您可以排序,可以。+1:您可能希望按原样打印标题行,并从第二行开始添加。另外,将
subsp
变量设置为FS
允许您使用更干净的组合键形式x[$1,$2]
@jaypal:是的,谢谢。我做了相应的修改。+1:您可能希望按原样打印标题行,并从第二行开始添加。另外,将subsp
变量设置为FS
允许您使用更干净的组合键形式x[$1,$2]
@jaypal:是的,谢谢。我已作出相应的修订。