[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

使用gawk统计第一列不重复的个数

本帖最后由 CrLf 于 2018-8-8 20:49 编辑

数据文件123.txt内容如下:

fieldA       fieldB
1,             aaa
1,              bbb
2,              ccc
2,              ddd
2,              eee
3,              fff
3,              ggg
3,              hhh
3,              iii

使用如下语句,统计$1列不重复的值,统计出来总是4,正确应该是3。这是为什么呢?

gawk "BEGIN{NR>1;FS=OFS=\",\"} {^!cn[$1]++;} END{print cn[$1];}" 123.txt

因为你统计的是第一列为3的次数(END行$1取值为3),改成这样试试:
  1. gawk "BEGIN{NR>1;FS=OFS=\",\"} !cn[$1]++{n++;} END{print n;}" 123.txt
复制代码
以及,首页出bug了,所以我把你标题改了...

TOP

回复 2# CrLf


    不行啊,大神!执行后还是4啊!

TOP

n-1 就好,因为还有个标题行呢

TOP

回复 4# CrLf


    不是在初始化的时候,NR>1 吗?难道没生效?

TOP

放在 {} 里面就不是条件啦
  1. gawk "BEGIN{FS=OFS=\",\"} $1 && NR>1 && !cn[$1]++{n++;} END{print n;}" 123.txt
复制代码

TOP

返回列表