Bash 如何使用UNIX获取列表中唯一值的频率计数?
我有一个文件,列表中有几千个域名。我使用uniq命令轻松地生成了一个只包含唯一名称的列表。现在,我想浏览一下,看看uniques列表中的每个项目在原始的非唯一列表中出现了多少次。我认为这个循环应该很容易实现,但我遇到了麻烦:Bash 如何使用UNIX获取列表中唯一值的频率计数?,bash,unix,Bash,Unix,我有一个文件,列表中有几千个域名。我使用uniq命令轻松地生成了一个只包含唯一名称的列表。现在,我想浏览一下,看看uniques列表中的每个项目在原始的非唯一列表中出现了多少次。我认为这个循环应该很容易实现,但我遇到了麻烦: for name in 'cat uniques.list'; do grep -c $name original.list; done > output.file 出于某种原因,它会给出一个结果,显示uniques文件和原始文件的一些计数(老实说,不确定是什么)
for name in 'cat uniques.list'; do grep -c $name original.list; done > output.file
出于某种原因,它会给出一个结果,显示uniques文件和原始文件的一些计数(老实说,不确定是什么)
我觉得我忽略了一些非常简单的事情。感谢您的帮助
谢谢 只需在您的文件上使用
uniq-c
:
-c、 --伯爵
按出现次数为行添加前缀
获取最终输出的命令:
排序原始.list | uniq-c
为什么不干脆对original.list | uniq-c进行排序呢?实际上这似乎不起作用。我得到了计数,但仍然有一些名称以不同的计数多次列出,好像它没有计算每个实例。也许这是一个大文件长度的产品?您确定这些文件中没有空格吗?(例如“abc”!=“abc”)