如何使用awk统计满足指定条件的记录占总记录数的百分比
awk条件百分比计算实现方案
直接使用下方脚本即可得到结果:
awk -F ',' ' NR == 1 {next} { total++ if ($4 ~ /finnish/ && $5 ~ /swedish/) { match_cnt++ } } END { printf "%.2f%%\n", (match_cnt / total) * 100 }' 你的文件名
逻辑说明
- 行处理阶段:
- 第一行是表头,用
NR==1 {next}直接跳过不参与统计 - 每一条非表头数据都会让总计数
total自增1 - 同时满足
native_lang为finnish、other_lang包含swedish两个条件的记录,会让匹配计数match_cnt自增1
- 第一行是表头,用
- 结果输出阶段:
- 用
(match_cnt / total) * 100计算百分比,通过printf格式化保留两位小数,末尾追加百分号输出
- 用
优化提示
如果字段存在首尾空格导致匹配失效,可以修改匹配逻辑去除空格干扰:
# 精确匹配native_lang为finnish(忽略首尾空格) trim($4) == "finnish" # 也可以直接用正则模糊匹配包含finnish即可 $4 ~ /finnish/
内容的提问来源于stack exchange,提问作者icatalan
相关产品推荐
相关产品推荐

