如何使用datamash对未知列数的所有列执行求和操作?
用GNU Datamash对未知列数的文件按列求和
嘿,这个需求太实用了!刚好GNU Datamash支持和cut完全对齐的列范围语法,用-就能轻松搞定不知道列数的情况,根本不用提前数列。
核心命令用法
直接用1-表示从第1列到最后一列,配合sum操作符就能对所有列求和:
datamash sum 1- < 你的数据文件
实际例子演示
假设你的数据文件data.txt内容是(空格分隔):
10 20 30 40 50 60 70 80 90 100 110 120
运行命令后,会输出每一列的求和结果(默认用制表符分隔):
150 180 210 240
如果想指定输出分隔符,比如改成逗号,加--output-delimiter ','参数即可:
datamash --output-delimiter ',' sum 1- < data.txt
适配不同输入分隔符
如果你的数据是逗号分隔的CSV文件,记得用-t ','指定输入分隔符:
datamash -t ',' sum 1- < 你的CSV文件
进阶:从指定列开始到最后一列求和
要是你不想从第1列开始,比如只想对第3列到最后一列求和,直接写3-就行:
datamash sum 3- < 你的数据文件
这个用法和cut的逻辑完全一致,不管数据有多少列,都能一键完成按列求和~
内容的提问来源于stack exchange,提问作者w177us
相关产品推荐
相关产品推荐

