Linux/unix重名

Linux/ unix duplicate names

我需要做的是,检查是否有重复的域名,看看是否有。 到目前为止,我用 grep、awk、sort、uniq 尝试了很多命令,但无法解决这个问题,我觉得它很简单,但无法实现。 P.s。如果我使用 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[]}END{for(i in a)if(a[i]>1)print a[i],i}' file
2 google
2 yahoo

对于 ., 的输入字段分隔符,第一个 {block} 是文件中每一行的 运行。它使用第二个字段构建数组 a:"google"、"facebook" 等。</code> 是第二个字段的值,因此 <code>++a[] 递增数组的值 a["google"]a["facebook"] 等。这意味着每次看到相同的名称时,数组中的值都会增加 1。

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

鉴于此文件:

$ cat /tmp/test.txt
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

在 Perl 1 衬里中:

$ perl -lane '$count{}++ if /^\d+,(\w+)/; END {while (($k, $v) = each %count) { print "$v $k" if $v>1}}' /tmp/test.txt 
2 yahoo
2 google