当前位置: 首页 > 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命令中的列索引来适应你的数据。

http://www.dtcms.com/a/10241.html

相关文章:

  • 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
  • 【计算机毕业设计】基于SSM+Vue的线上旅行信息管理系统【源码+lw+部署文档】
  • 正则工具类
  • 如何利用Ubuntu服务器运行深度学习项目?
  • WPF中CommandParameter用法
  • 不用从头训练,通过知识融合创建强大的统一模型
  • 【Spring Boot】在项目中使用Spring AI
  • 《QT实用小工具·六十五》基于QPropertyAnimation实现的移动动画和控件覆盖
  • 13、Go Gin集成Viper配置
  • Typescript高级: 深入理解Extract类型
  • 2010-2022年各省新质生产力数据(含原始数据+测算代码+计算结果)