You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用awk统计CSV文件中每个国家对应的酒店数量?

awk统计所有国家酒店数量的实现方法

你现在使用的固定匹配某一国家的计数逻辑,调整为用关联数组存储计数即可实现全国家统计,不需要提前枚举所有国家名称:

可用命令

# 基础版:输出所有国家及对应酒店数
awk -F ',' 'NR>1 {count[$7]++} END {for (country in count) {print country, count[country]}}' /home/data/hotels.csv

注意这里加了NR>1的判断,是为了跳过CSV的第一行表头,避免把表头的country字段计入统计结果,如果你手上的数据集没有表头,可以删掉这个判断条件。

参数说明

  • count[$7]++:awk支持关联数组,直接以第7列(国家列)的值作为数组的键,每读取到一行对应国家的记录,就给对应键的数值加1
  • END块遍历整个关联数组,逐行输出国家名称和对应的酒店数量

可选扩展:按酒店数量排序

如果需要按国家的酒店数量从高到低排序,在命令后加管道调用sort即可:

awk -F ',' 'NR>1 {count[$7]++} END {for (country in count) {print country, count[country]}}' /home/data/hotels.csv | sort -k2nr

注意事项

如果你的CSV文件中存在带引号包裹、内部含逗号的字段(比如带逗号的酒店名称),单纯按,分割的逻辑会出现字段错位。如果你之前统计单个国家的命令可以得到正确结果,说明你的数据集没有这类特殊格式,以上命令可以直接正常使用。

内容的提问来源于stack exchange,提问作者Vivern202

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:54:03