You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于含通配符的黑名单文件批量过滤子域名列表

解决方案

直接用支持通配规则拆分的awk命令即可实现需求,命令如下:

awk '
BEGIN { IGNORECASE = 1 }
NR == FNR {
    # 处理黑名单规则
    if ($0 ~ /^\*\./) {
        # 提取通配符后缀,去掉前面的*.
        wildcard_suffix = substr($0, 3)
        wildcards[wildcard_suffix] = 1
    } else {
        # 精确匹配规则
        exact[$0] = 1
    }
    next
}
{
    # 先检查精确匹配
    if (exact[$0]) next
    # 检查是否匹配任意通配符后缀(即域名结尾为 .通配后缀)
    match_flag = 0
    for (suffix in wildcards) {
        if (ends_with($0, "." suffix)) {
            match_flag = 1
            break
        }
    }
    if (!match_flag) print
}
# 实现ends_with工具函数
function ends_with(str, suffix) {
    return substr(str, length(str) - length(suffix) + 1) == suffix
}
' blacklist.txt subdomains.txt

执行逻辑说明

  • 首先将黑名单分为两类规则存储:精确匹配规则、通配符后缀规则
  • 处理待过滤域名时,先判断是否命中精确匹配,命中则直接丢弃
  • 未命中精确匹配的域名,遍历所有通配符后缀,判断域名是否以.通配后缀结尾,命中则丢弃
  • 所有规则都未命中的域名即为最终结果输出

测试验证

针对你给出的样本文件,执行上述命令后输出结果如下:

abc-test.example.com
www.example.com

完全符合预期输出。

内容的提问来源于stack exchange,提问作者Emad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:36:02