计算并汇总文件中的重复记录(UNIX)

时间:2014-03-20 02:31:39

标签: bash unix

我应该计算文件中重复记录的总数。

我用过

 sort $TEMP_FILE2 | uniq -d

列出所有没有计数的重复记录。我的问题是,我不知道用什么脚本来总结或得到这些记录的总和。

这应该是我的输出:

总数据计数:xxx

重复数据计数:xxx (文件中的重复记录总数)

最终数据计数:xxx

1 个答案:

答案 0 :(得分:2)

我会在这里做一些猜测,因为它并不完全清楚需要什么。首先,我假设您的文件看起来像这样:

apple
banana
pear
apple
pear
apple

我假设“总数据计数”只是条目数,即文件中的总行数。 wc -l是其中的工具:

$ echo "Total Data Count: $(wc -l < temp_file)"
Total Data Count: 6
$ 

然后“重复数据计数”是以下两件事之一:

如果它是重复的所有记录的计数(在我的示例中为5 =“apple”,“apple”,“apple”,“banana”,“banana”),uniq -dc以获取计数重复的字段,然后awk来总结它们:

$ echo "Duplicate Data Count: $(sort temp_file | uniq -dc | awk '{count+=$1} END {print count}')"
Duplicate Data Count: 5
$ 

如果是包含重复项的记录数(但不是所有重复项的完整计数)(2 =“apple”,在我的示例中为“banana”),那么wc -l的{​​{1}}应该足够了:

uniq -d

我假设“最终数据计数”是删除了重复项的所有记录的数量(在我的示例中为3 =“apple”,“pear”,“banana”)。在这里,我们可以将$ echo "Duplicate Data Count: $(sort temp_file | uniq -d | wc -l)" Duplicate Data Count: 2 $ 简单地传递给uniq

wc -l