首页 > 系统相关 >linux 查看csv文件,按指定列聚合 排序

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

时间:2024-05-29 21:31:31浏览次数:31  
标签:count 排序 name gender salaries linux print 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命令中的列索引来适应你的数据。

标签:count,排序,name,gender,salaries,linux,print,csv,性别
From: https://blog.csdn.net/weixin_58494422/article/details/139247199

相关文章

  • Linux入门第六章LVM与磁盘配额
    一.LVM逻辑卷管理    许多Linux操作系统的使用者在安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量。如果当初估计不准确,一旦系统分区不够用就可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。1.LV......
  • Linux查找文件内容
    从文件内容查找匹配指定字符串的行:$grep"被查找的字符串"文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件$grep"thermcontact"*/*.in从文件内容查找与正则表达式匹配的行:$grep–e“正则表达式”文件名查找时不区分大小写:$grep–i"......
  • 排序(前篇)
    1.排序的概念及其运用2.插入排序的概念及实现3.希尔排序的概念及实现 4.选择排序概念及实现总代码(对比各个排序在大量的数据情况排序所化的时间):1.排序的概念及其运用1.1排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的......
  • 【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(一)
    文章目录......
  • Linux需要修改时区(目前只写了 上海、越南、印度、日本、韩国、UTC0六个时区,可根据自己
    #!/bin/sh#时区列表timezones=("Asia/Shanghai""Asia/Ho_Chi_Minh""Asia/Calcutta""Asia/Tokyo""Asia/Seoul""UTC")echo"上海时区"echo"越南时区"echo"印度时区"e......
  • Linux 无法访问另一台机器上的服务,重启后可以访问,一段时间后又无法访问
    一台Linux主机A无法访问另一台Linux主机B上的服务,我在自己的电脑(windows)上是可以访问的,重启B后可以访问,但是十几个小时之后又无法访问,再次重启后又可以访问。#无法访问的原因是本机的静态ip设置有问题#系统是Debian12source/etc/network/interfaces.d/*#Theloopback......
  • 使用shell脚本替换csv文件中的数据
    [observer@xxx-grey-openrestytest]$catfile.csvbeijing,beijing,lisi,10shanxi,xian,tom,6shanghai,shanghai,xiaoming,3guangdong,guangzhou,wangwu,8sichuan,chengdu,cat,5[observer@xxx-grey-openrestytest]$awk-F,-vOFS=,'$4>5{$4=3}{print......
  • linux-c-log-rotation-scheme
    linux-c-log-rotation-scheme#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>voidlogworker(){ino_tinode=0;FILE*logfile;logfile=fopen(logfilename,"a+");while(running){......
  • Linux块设备驱动
    1块设备驱动简介块设备是针对存储设备的,比如SD卡、EMMC、NANDFlash、NorFlash、SPIFlash、机械硬盘、固态硬盘等。因此块设备驱动其实就是这些存储设备驱动。块设备驱动比字符设备复杂,不同类型的存储设备又对应不同的驱动子系统,如MTD(memorytechnologydevice内存技术设备......
  • linux环境开发过程中遇到的问题以及解决办法 how to
    1.装好开发机后上网检查网口是否开通,网线是否正常一般桌面上多个网口可能只开通一个,需要联系IT联系之前可以先找一个正常的网线连到PC看看是否能够提供网络一般从公司内网连接外网需要连接代理检查proxy的可访问性curl-x<proxy_address>:<proxy_port>http://www.example......