我需要帮助确定如何计算文件中重复信息的频率。例如:
0
0
14
14
10
10
10
在这里,我希望有一个UNIX命令告诉我有多少次重复2次,并告诉我在一个文件中有多少次重复超过2次。
例如,此命令将使用上述数据并产生一个输出,告诉我文件中有2个唯一的数字重复2次(数据集中每次重复2次0和14)以及重复的1个唯一数字文件中超过2次(10次在数据集中出现两次以上)。
答案 0 :(得分:1)
如果你只是想知道有两个出现两次的数字和一个出现三次的数字:
sort file | uniq -c | awk '{print $1}' | sort | uniq -c
2 2
1 3
如果你想知道这些数字是什么,我会使用perl:
perl -lne '
$n{$_}++
} END {
push @{$aggregate{$n{$_}}}, $_ for keys %n;
$,="\t";
print $_, scalar(@{$aggregate{$_}}), join(",",@{$aggregate{$_}}) for keys %aggregate
' file
输出
3 1 10
2 2 0,14
答案 1 :(得分:0)
$ cat tst.awk
{ cnt[$0]++ }
END {
for (key in cnt)
hits[cnt[key]]++
for (c in hits)
print hits[c], c
}
$
$ awk -f tst.awk file
2 2
1 3
广告,如果您想知道哪些值与哪些值相关联:
$ cat tst.awk
{ cnt[$0]++ }
END {
for (key in cnt) {
c = cnt[key]
hits[c]++
vals[c] = (c in vals ? vals[c] "," : "") key
}
for (c in hits)
print hits[c], c, vals[c]
}
$
$ awk -f tst.awk file
2 2 0,14
1 3 10