linux - 用于汇总文件列的 awk 命令

标签 linux bash awk

我有一个文件 (old.dat),假设有 20 列。现在,我想要一个包含 2 列(即 x 和 y)的不同文件(new.dat),其中 y 是 old.dat 文件的所有偶数列的总和,即 y = $2+$4+$6+...(old.dat 文件中的 X 将保持不变)

有没有有效的方法来为此目的编写“awk”命令? 注意:我不想每次都这样写$2+$4+$6,可以是一个变量吗?

旧数据:

-36.0331 1 -36.0331 2 -36.0331 3 -36.0331 2 -36.0331 1 -36.0331 2

new.dat(所需的)

-36.0331  11 

这只是文件的一行。

最佳答案

可以使用for循环。

awk '{s=0;for(i=2;i<=NF;i+=2)s+=$i;print$1,s}' old.dat > new.dat

关于linux - 用于汇总文件列的 awk 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32826394/

相关文章:

linux - bash脚本编制:退出状态

bash - tr 输出到新行

shell - 使用 sed 或 awk 如何删除特定行周围的模式

linux - centos 7 AWS(使用 ssh key 和密码登录)

c++ - 使用 u_context 结构 - uc_stack.ss_flags 的用途是什么?

css - 为什么 Linux 上的 Chrome 显示错误的字体粗细?

bash - 获取零的长度(被一个打断)

linux - ld.so 替代品

bash - 在 bash 中检测虚拟化

linux - awk:遍历大量文件的内容