如何使用awk统计母语或其他语言含西班牙语的用户平均年龄
代码问题修正
你原来的写法存在3个核心错误:
- 没有跳过CSV表头行,会把第一行的字段名当做数据处理
- 单个变量无法同时存储符合条件的用户数和年龄总和,需要两个独立变量分别计数、累加年龄
- 输出格式里多写了多余的
%符号,且没有做除0防护避免异常
可直接运行的正确代码
awk -F ',' ' # 跳过表头,匹配母语是西班牙语/其他语言包含西班牙语的用户 NR>1 && ($4 == "spanish" || $5 ~ /\<spanish\>/) { sum_age += $3 user_cnt += 1 } END { # 避免没有符合条件的用户时除以0报错 avg = user_cnt > 0 ? sum_age / user_cnt : 0 printf("%.2f\n", avg) }' 你的csv文件路径
运行结果
输出为 21.50 和预期一致,符合你的计算要求。
内容的提问来源于stack exchange,提问作者icatalan
相关产品推荐
相关产品推荐

