Board logo

标题: 使用gawk统计第一列不重复的个数 [打印本页]

作者: shootman2    时间: 2018-8-8 18:04     标题: 使用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
作者: CrLf    时间: 2018-8-8 20:51

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

回复 2# CrLf


    不行啊,大神!执行后还是4啊!
作者: CrLf    时间: 2018-8-8 23:35

n-1 就好,因为还有个标题行呢
作者: shootman2    时间: 2018-8-9 13:22

回复 4# CrLf


    不是在初始化的时候,NR>1 吗?难道没生效?
作者: CrLf    时间: 2018-8-9 19:03

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





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2