Linux/unix 重名

标签 linux sorting unix awk uniq

我需要做的是,检查重复的域名并查找是否有。 到目前为止,我尝试了很多 grep、awk、sort、uniq 命令,但无法解决这个问题,我感觉它很简单,但无法实现。 附注如果我使用uniq -c我在这个文件中得到了一个巨大的字符串列表,我看到它有多少个重复项以及它的数字字符串。

从我正在使用的文件中添加 20 行

1,google.com
2,facebook.com
3,youtube.com
4,yahoo.com
5,baidu.com
6,amazon.com
7,wikipedia.org
8,twitter.com
9,taobao.com
10,qq.com
11,google.co.in
12,live.com
13,sina.com.cn
14,weibo.com
15,linkedin.com
16,yahoo.co.jp
17,tmall.com
18,blogspot.com
19,ebay.com
20,hao123.com

我想看到的输出

>        2 google
>        2 yahoo

感谢您的帮助!

最佳答案

您可以使用类似的方法来获得您想要的输出:

$ awk -F'[.,]' '{++a[$2]}END{for(i in a)if(a[i]>1)print a[i],i}' file
2 google
2 yahoo

将输入字段分隔符设置为 .,,将为文件中的每一行运行第一个 {block}。它使用第二个字段构建一个数组 a:“google”、“facebook”等。$2 是第二个字段的值,因此 ++a[$2] 会递增数组 a["google"]a["facebook"] 等的值。这意味着每次看到相同的名称时,数组中的值就会加一。

处理完整个文件后,for (i in a) 循环将遍历数组中的所有键(“google”、“facebook”等)并打印那些值大于 1 的键。

关于Linux/unix 重名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28034142/

相关文章:

linux - 'kill -0'(杀死破折号零)选项在 while 循环中做什么?

php - 为什么 usort (php) 即使不返回整数也能工作?

Python:根据单词的第一个字符拆分列表

c++ - 如何对 1 到 50000 之间的 10000 个数字进行排序

python - 防止文件描述符在 POSIX 系统上关闭

linux - StartX 运行失败 :- Arch linux openbox

监控linux系统的python插件

Linux 驱动程序开发 - 我会严重损害我的系统吗?

c++ - 在 gdb 中分析核心转储后没有可用的符号表信息

检查来自 C 程序的 UNIX 命令行参数、管道和重定向