当前位置: 首页 > news >正文

linux 查看csv文件,按指定列聚合 排序

在Linux中,你可以使用awk工具来查看CSV文件的内容,并按照指定的列进行聚合。awk是一种强大的文本处理工具,它可以处理文本文件中的数据,并根据条件执行相应的操作。

以下是一个示例,假设你有一个名为data.csv的CSV文件,其中包含三列数据:姓名、年龄和性别,内容如下:

姓名,年龄,性别

张三,25,男

李四,30,男

王五,22,女

赵六,28,女

1、按照性别进行聚合,并计算每个性别的总人数。

awk -F, 'BEGIN {print "性别,数量";} NR>1 {count[$3]++;} END {for (gender in count) print gender "," count[gender];}' data.csv

解释:

-F,:指定输入字段分隔符为逗号。

BEGIN {print "性别,总人数";}:在处理文件之前,打印标题行。

NR>1 {count[$3]++;}:对于每一行(除了标题行),将第三列(性别)作为键,将对应的计数器递增。

END {for (gender in count) print gender "," count[gender];}:在处理完所有行之后,遍历计数器数组,并打印每个性别及其对应的人数。

执行上述命令后,你将得到以下输出:

性别,数量

男,2

女,2

2、按照性别列进行排序,并且只显示性别和年龄列。

awk -F, 'NR>1 { salaries[$3]+=$2 } END { for(name in salaries) print name, salaries[name] }' data.csv | sort -k2 -n

解释:

-F, 设置输入分隔符为逗号。

{ salaries[$3]+=$2 } 在数组salaries中,使用性别作为键,累加年龄值。

END { for(name in salaries) print name, salaries[name] } 在处理完所有行之后,打印性别和对应的累加的年龄值。

| sort -k2 -n 管道输出到sort命令,按第二列(索引为2,因为索引从1开始)进行数值排序

执行上述命令后,你将得到以下输出:

男,55

女,50

这个输出按照性别进行了聚合,并显示了每个性别的总人数。你可以根据需要修改CSV文件的列名和awk命令中的列索引来适应你的数据。

相关文章:

  • Unity面试八股文之基础篇
  • 扩散模型的一些公式证明
  • 图论(四)—最短路问题(Dijkstra)
  • JS书写规范
  • TCP/IP协议族
  • 使用python将多个mp3或者wma合并成一个mp3
  • Windows系统使用Docker部署Focalboard团队协作工具详细流程
  • can设备调试 - linux driver
  • Jmeter元件及基本作用域
  • 第三方软件测试机构进行代码审计需要哪些专业的知识?
  • 【Vue】input框自动聚焦且输入验证码后跳至下一位
  • 国内信创数据库生态
  • 数据结构(一)
  • ubuntu安装桌面
  • 电脑频繁弹出广告?掌握这4个方法,一键快速屏蔽
  • win11安装MySQL
  • 快速搭建uni-app项目,vue2、Vue3与图鸟UI组件封装
  • 【第八章】多线程——Thread类
  • (1)无线电失控保护(二)
  • Compose Multiplatform 1.6.10 发布,解释一些小问题, Jake 大佬的 Hack
  • A股三大股指小幅低收:电力股大幅调整,两市成交10221亿元
  • 比熬夜更伤肝的事,你可能每天都在做
  • 河北:开展领导干部任性用权等形式主义官僚主义问题专项整治
  • 外交部:对伊朗拉贾伊港口爆炸事件遇难者表示深切哀悼
  • 国家卫健委:工作相关肌肉骨骼疾病、精神和行为障碍成职业健康新挑战
  • 中公教育薪酬透视:董监高合计涨薪122万,员工精简近三成