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

如何利用egrep读取含恶意User-Agent的文本文件并移除带空格的变量?

处理User-Agent列表并过滤含空格条目

听起来你是想从收集到的恶意User-Agent文件里,剔除那些包含空格的条目,方便后续导入iptables做拦截对吧?我给你几个实用的egrep方案,结合你的场景来用:

1. 直接过滤掉含空格的整行

如果你的文件里每行是一个完整的User-Agent字符串,想要保留完全没有空格的UA(移除带空格的行),用反向匹配的egrep命令就行:

egrep -v " " your_ua_file.txt
  • -v 参数表示反向匹配,也就是输出所有不包含空格的行
  • 把结果重定向到新文件的话,加个 > filtered_ua_list.txt 就可以:
    egrep -v " " your_ua_file.txt > filtered_ua_list.txt
    

2. 提取每行中的无空格片段

如果每行里混有带空格和不带空格的内容(比如一行里有多个UA片段),只想提取所有不带空格的部分,用-o参数只输出匹配的内容:

egrep -o "\S+" your_ua_file.txt
  • \S+ 表示匹配一个或多个非空格字符,-o 会把每个匹配的片段单独占一行输出

3. 结合iptables直接拦截过滤后的UA

既然你本来就有iptables脚本,直接把过滤后的结果集成进去就行。注意iptables的string模块需要内核支持,先确认模块加载:

modprobe xt_string

然后用循环把过滤后的UA添加到拦截规则:

egrep -v " " your_ua_file.txt | while read ua; do
  # 这里以拦截80端口的HTTP请求为例,可根据你的需求改端口/协议
  iptables -A INPUT -p tcp --dport 80 -m string --string "$ua" --algo bm -j DROP
done

如果UA里包含正则特殊字符(比如.、/、+),最好先转义一下避免规则失效:

egrep -v " " your_ua_file.txt | sed 's/[.*+?^${}()|[\]\\]/\\&/g' | while read ua; do
  iptables -A INPUT -p tcp --dport 80 -m string --string "$ua" --algo bm -j DROP
done

小提示

  • 如果你想测试匹配结果,先不加重定向或iptables命令,直接跑egrep看输出是否符合预期
  • 可以用egrep -n " " your_ua_file.txt先查看哪些行包含空格,确认要移除的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:28:31