linux - 根据第一列的开头合并 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。
有任何想法吗?
解决方案
要输出总和列 2-4,您可以使用 awk:
awk '{ col2+=$2; col3+=$3; col4+=$4 } END { printf "%d %d %d\n", col2, col3, col4 }' file1 > file2
更新您的帖子以解释在输出中生成第 1 列的逻辑,我们可以看到如何最好地将该部分合并到答案中。
推荐阅读
- unity3d - Unity3D - 无论选择的图形设置如何,有什么方法可以保持纹理/对象的质量?
- java - org.json.simple。添加头节点
- java - 为基于 struts 的应用程序创建 spring 框架插件
- java - Kubernetes 上的 Spring Boot 应用程序中的错误时间/时区
- apache-flink - Flink Stateful Functions 与现有 Flink 应用程序
- sql-server - 创建没有递归的日历表
- c# - Rg.Plugins.Popup 错误 Rg.Plugins.Popup.Exceptions.RGPopupStackInvalidException: 'No Page in PopupStack'
- google-api - 如何通过 API 获取我的给定 URL 的 Google 上次抓取日期
- python - Flask从函数python中提取变量
- google-cloud-platform - 如何找到将数据从 Cloud Storage 流式传输到 BiqQuery 的实现代码?