我尝试在bash中编写一个脚本,从一个文本文件(example.com,www.example.com等)中定位URLexample.eu,并使用egrep将它们复制到另一个文本文件中。我当前的输出提供了我想要的URL,但不幸的是,还有很多我不想要的,比如123.123或example.3xx。
我的脚本当前如下所示:
egrep -o '\w*\.[^\d\s]\w{2,3}\b' trace.txt > url.txt
我尝试使用一些regex检查器站点,但站点上的regex给我的正确答案比我自己的结果更多。
任何帮助都是有代价的
2条答案
按热度按时间ldioqlga1#
如果知道域后缀,就可以有一个正则表达式来查找 *.(com|欧盟|组织)
ws51t4hk2#
基于https://stackoverflow.com/a/2183140/939457(和https://www.rfc-editor.org/rfc/rfc2181#section-11),域名是一系列标签,可以包含除
.
以外的任何字符,并由.
分隔。由于您只需要有效的TLD,因此可以使用https://data.iana.org/TLD/tlds-alpha-by-domain.txt生成模式列表:结果:
注意:这是一个内存杀手,上面的例子占用了2GB,TLD列表非常庞大,您可以考虑搜索常用TLD列表并使用它。