如何用Unix命令从文本文件提取.com/.net等各类后缀的域名
通用域名提取方案
针对你给出的文本格式(每行以域名开头,后跟 - 机构名 - 标题),以下几种命令行方法可以通用提取域名:
方法1:使用 sed
利用正则捕获行首的域名部分,适配所有合法域名后缀:
sed -E 's/^([a-zA-Z0-9.-]+)\s+-.*$/\1/' input.txt
- 正则说明:
^([a-zA-Z0-9.-]+):捕获行首所有符合域名规则的字符(字母、数字、点、连字符)\s+-.*$:匹配后续的空格+破折号及所有剩余内容- 替换为捕获的第一组,即纯域名
方法2:使用 awk
利用固定分隔符直接提取第一字段,更简洁:
awk -F '\\s+-\\s+' '{print $1}' input.txt
- 说明:指定分隔符为「一个或多个空格+破折号+一个或多个空格」,直接输出每行第一个字段就是域名
方法3:使用 grep
仅提取行首符合域名格式的内容:
grep -oE '^[a-zA-Z0-9.-]+' input.txt
- 说明:
-o参数只输出匹配到的部分,^[a-zA-Z0-9.-]+匹配行首的完整域名
以上三种方法都能处理.com、.org、.io、.co.uk等各类后缀的域名,无需针对特定后缀修改规则。
内容的提问来源于stack exchange,提问作者Muhammad Imran
相关产品推荐
相关产品推荐

