识别 UNIX 服务器上文件中的重复条目

识别 UNIX 服务器上文件中的重复条目

我的文件是分号分隔的多列文件。我只想删除第一列中的重复记录。另外,我只想从第一列中计算这些重复条目的数量。有什么建议吗?

答案1

像这样的东西应该有效:

awk -F";" '!seen[$1]++{print}END {for (i in seen) if (seen[i]>1) print i,"found :" seen[i] "times"}' file

END 之前的第一部分将不会打印模拟的重复项uniq。这意味着如果某个条目被发现两次或多次,则仅打印第一个条目。

END 中的代码将打印多次找到的所有条目。

如果您需要打印纯粹的唯一条目,模拟uniq -u意味着如果一个条目被发现两次或多次将根本不会被打印,那么您可以使用:

awk -F";" '{seen[$1]++}END {for (k=1;k<=2;k++) for (i in seen) if (seen[i]==1) {print i;delete seen[i];continue} else {print i,"found :" seen[i] "times"}}' file

这将迭代数组两次。第一次将打印真正的 uniq 条目,第二次将打印重复的条目。

选择:

awk -F";" '{seen[$1]++}END {for (i in seen) print "found :" seen[i] "times:",i}' file |sort

这将打印每个条目以及计数(唯一条目将被找到一次,非唯一条目将被多次找到)

相关内容