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

如何使用grep -Po正则选项非贪婪跨多行匹配提取nmap有效扫描结果

实现命令

直接执行如下命令即可提取所有nmap扫描返回有效信息(端口open+后续脚本输出)的条目:

grep -Poz '(?s)Nmap scan report for \d+\.\d+\.\d+\.\d+.*?111/tcp open.*?(?=\nNmap scan report|\Z)' test2
正则参数说明
  • -P 启用Perl兼容正则语法
  • -o 只输出匹配到的内容
  • -z 将输入内容视为以NULL字符分隔的单条记录,相当于把整个文件加载为单个字符串,支持跨行匹配
  • (?s) 开启DOTALL模式,此时.可以匹配换行符,你之前遇到的匹配异常问题是没有使用非贪婪修饰符,和该模式无关
  • Nmap scan report for \d+\.\d+\.\d+\.\d+ 匹配单台主机扫描结果的起始行
  • .*?111/tcp open 非贪婪匹配到端口开放的行,自动过滤掉closed、filtered的无效主机条目
  • .*?(?=\nNmap scan report|\Z) 继续非贪婪匹配当前主机的所有后续扫描内容,直到遇到下一台主机的扫描起始行或者文件末尾,避免贪婪匹配吃掉整个文件内容
输出效果

执行命令后只会返回10.11.1.72的完整有效扫描结果,和你期望的输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:54:04