我使用以下命令来提取包含.com扩展名并可能包含.us或任何国家/地区扩展名的不同URL。如何从Linux中的文件中提取字符串的不同部分
grep '\.com' source.txt -m 700 | uniq | sed -e 's/www.//'
> dest.txt
问题是,它提取了同一个doamin中的url,我不想要的东西。例如: abc.yahoo.com efg.yahoo.com
我只需要yahoo.com。我如何使用grep或任何其他命令仅提取不同的域名?
我使用以下命令来提取包含.com扩展名并可能包含.us或任何国家/地区扩展名的不同URL。如何从Linux中的文件中提取字符串的不同部分
grep '\.com' source.txt -m 700 | uniq | sed -e 's/www.//'
> dest.txt
问题是,它提取了同一个doamin中的url,我不想要的东西。例如: abc.yahoo.com efg.yahoo.com
我只需要yahoo.com。我如何使用grep或任何其他命令仅提取不同的域名?
也许这样?
egrep -io '[a-z0-9\-]+\.[a-z]{2,3}(\.[a-z]{2})?' source.txt
您是否尝试过使用awk代替sed并指定“。”作为分隔符,只打印出最后两个字段。
awk -F "." '{ print $(NF-1)"."$NF }'
这可能是。 com.us或.com.sa等将这服务? – 2012-07-29 19:57:46
我试过了,没有帮助。例如,如果你有:abc.yahoo.com,它打印abc.yahoo – 2012-07-29 19:59:07
也许这样的事情应该有所帮助:
egrep -o '[^.]*.com' file
我认为这应该工作,除了一部分,它会给我第二个域扩展名,如.com.us或.com.uk ??我需要它。 – 2012-07-29 19:35:09
我试过了。它可以很好地工作,但不会在多个扩展中使用,例如:.com.us,.com.sa。任何想法如何使它适用于这两种情况? – 2012-07-29 20:28:43
这不一定是我们的,该文件可能包含不同的扩展名如美国,英国等 – 2012-07-29 19:15:17
@JuryA怎么样? – 2012-07-29 19:22:06
是的。这服务于:egrep -io'[a-z0-9 \ - ] + \。com(\。[a-z] {2})?' source.txt -m 100 | uniq | sed -e's/www。//''> dest.txt除了一件事。为什么uniq不做它应该做的事?即如果我有abc.yahoo.com&efg.yahoo.com,新的dest文件包含yahoo.com的两个条目? – 2012-07-29 20:42:10