我使用以下命令來提取包含.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