好的,我们假设我在这样的文本文件中有一个地址列表:
https://www.amazon.com
https://www.google.com
https://www.msn.com
https://www.google.com
https://www.netflix.com
https://www.amazon.com
...
那里有很多其他的东西,但基本上我遇到的问题是在运行之后:
grep "https://" addresses.txt | cut -d"/" -f3
我两次获得amazon.com和google.com。我想只让他们一次。我不知道如何只针对那些独特的东西进行搜索。
答案 0 :(得分:6)
将输出传输到sort和uniq:
grep "https://" addresses.txt | cut -d"/" -f3 | sort | uniq
答案 1 :(得分:3)
您可以将sort
用于此目的。
只需在命令中添加另一个管道,并使用sort的唯一功能删除重复项。
grep 'https://' addresses.txt | cut -d"/" -f3 | sort -u
编辑:您可以使用sed
代替grep
和cut
这会减少您的命令
sed -n 's@https://\([^/]*\).*@\1@p' < addresses.txt | sort -u
答案 2 :(得分:1)
grep "https://" addresses.txt | cut -d"/" -f3 | sort | uniq
就是你想要的
答案 3 :(得分:1)
我会过滤结果 post-grep 。
e.g。使用sort -u
进行排序,然后生成一组唯一条目。
您也可以使用uniq
,但输入必须提前排序。
这是能够将这些实用程序连接在一起的美妙之处。您可以获得不同的可执行文件,而不是单个grepping / sorting / uniq(ing)工具,您可以按照自己的意愿将它们链接在一起。
答案 4 :(得分:1)
使用awk,你只能使用一个unix命令而不是四个管道:
awk 'BEGIN {FS="://"}; { myfilter = match($1,/https/); if (myfilter) loggeddomains[$2]=0} END {for (mydomains in loggeddomains) {print mydomains}}' addresses.txt