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
我需要做的是,检查是否有重复的域名,看看是否有。
到目前为止,我用 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