我需要做的是,检查重复的域名并查找是否有。
到目前为止,我尝试了很多 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/