bash - 如何对选项卡文件中的每一列进行累积和连续求和(UNIX 环境)
问题描述
我有一个类似的表格文件
Q8VYA50 210 69 2 8 3
Q8VYA50 208 69 1 2 8 3
Q9C8G30 316 182 4 4 7
P335430 657 98 1 10 7
我想做的是应用从第 4 列到 NF 的累积总和,并在每一列中打印该列总和的结果以及前列的原始值(如果有)。因此,所需的输出将是
Q8VYA50 210 69 2 10 13
Q8VYA50 208 69 1 3 11 14
Q9C8G30 316 182 4 8 15
P335430 657 98 1 11 18
我试图通过不同的方式通过 awk 脚本中的 sum 函数来实现,包括指定必须应用累积和的字段的 for 循环。但是,得到的结果是错误的。
Unix(Bash)有什么方法可以正确地做到这一点吗?提前致谢!
这是我尝试做的一种方式@Inian
gawk 'BEGIN {FS=OFS="\t"} {
for (i=4;i<=NF;i++)
{
sum[i]+=$i; print $1,$2,$3,$i
}
}' “输入文件”
其他方法是手动为每一列做。$4,$5+$4,$6+$5+$4,$7+$6+$5+$4 等等,但我认为这是一种“种子”方法。
解决方案
以下awk
可能会对您有所帮助。
awk '{for(i=5;i<=NF;i++){$i+=$(i-1)}} 1' OFS="\t" Input_file
推荐阅读
- sql - 用于计算多列总和的智能 SQL 查询
- r - cbind() on matrices with different lengths
- android - Firebase AuthUI: NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/internal/zzbgl
- azure-sql-database - 从生产中刷新 Azure SQL DB
- jquery - 在函数外传递 json var 值
- javascript - 跟踪一组复选框中特定复选框的更改
- python - Google Sheet API - 获取数据验证
- java - 如果我不执行 .save() (Springboot),Jpa 实体是否会在任何地方持久存在
- javascript - 得到
of external page using JavaScript</h1> <div id="body"><p>I would like to get the content of the <code><title></code> tag from any specified external page, using JavaScript. Specifically, this is using the < - sql - SQL 过程语句被忽略