首页 > 解决方案 > 根据第一列的开头合并 txt 中的几行

问题描述

我有一个 txt file1,它有四列:

Staphylococcus_aureus<0.8 1 0 3
Staphylococcus_aureus_subsp_aureus<0.8 1 2 0
Staphylococcus_aureus_subsp_aureus_S228<0.8 2 0 2

我想生成一个输出 txt file2 看起来像:

Staphylococcus_aureus<0.8 4 2 5

解释:第一列具有相同的开头“Staphylococcus_aureus<0.8”,我想添加第 2、3、4 列。

我在想 awk、sed、perl 或 python。

有任何想法吗?

标签: linuxbashperlawksed

解决方案


要输出总和列 2-4,您可以使用 awk:

awk '{ col2+=$2; col3+=$3; col4+=$4 } END { printf "%d %d %d\n", col2, col3, col4 }' file1 > file2

更新您的帖子以解释在输出中生成第 1 列的逻辑,我们可以看到如何最好地将该部分合并到答案中。


推荐阅读