File 用5行块搜索包含nmap扫描的文件,并且仅当其中2行满足要求时才搜索

File 用5行块搜索包含nmap扫描的文件,并且仅当其中2行满足要求时才搜索,file,sed,awk,grep,lines,File,Sed,Awk,Grep,Lines,任何人都知道如何grep一个文件并查找2行信息,然后只输出这些行。我正在网络10.1.1.x-10.1.254.x上执行nmap扫描,我正在查找端口22打开的所有IP。Nmap创建我的文件,但它包含以下3种类型的条目 Nmap scan report for 10.1.0.1 <br>Host is up 93.1s latency). <br>Scanned at (Date) (Time) <br>Port State Service <

任何人都知道如何grep一个文件并查找2行信息,然后只输出这些行。我正在网络10.1.1.x-10.1.254.x上执行nmap扫描,我正在查找端口22打开的所有IP。Nmap创建我的文件,但它包含以下3种类型的条目

Nmap scan report for 10.1.0.1
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  filtered  ssh 

Nmap scan report for 10.1.0.2
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  open  ssh 

Nmap scan report for 10.1.0.3
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  open  ssh 

Nmap scan report for 10.1.0.4
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  filtered  ssh 
10.1.0.1的Nmap扫描报告

主机已启动(93.1s延迟)。
扫描日期(时间)
港口国服务
22/tcp过滤ssh 10.1.0.2的Nmap扫描报告
主机已启动(93.1s延迟)。
扫描日期(时间)
港口国服务
22/tcp开放ssh 10.1.0.3的Nmap扫描报告
主机已启动(93.1s延迟)。
扫描日期(时间)
港口国服务
22/tcp开放ssh 10.1.0.4的Nmap扫描报告
主机已启动(93.1s延迟)。
扫描日期(时间)
港口国服务
22/tcp过滤ssh
我希望grep文件并返回第1行和第5行,并且仅当第5行包含open时

我试过:
grep-e'10.1'-e'open'file.txt

这会得到我想要的结果,但会返回每一行1以及第1行和第5行

我试过:
sed-e'/10.1./,/open/!d'file.txt

但返回的结果与使用相同:
cat file.txt

还尝试了
awk'/10/&&/open/'file.txt

但是什么也不退


任何建议

使用
gnu awk
,您都可以这样做

awk '/10\.1/ && /open/' RS="\n\n" file
Nmap scan report for 10.1.0.2
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  open  ssh
Nmap scan report for 10.1.0.3
<br>Host is up 93.1s latency).
<br>Scanned at (Date) (Time)
<br>Port    State     Service
<br>22/tcp  open  ssh
这是一个适用于大多数
awk
version的版本

awk '/10\.1/ {p=1} p {s=s"\n"$0} /filtered/ {p=0;s=""} /open/ {print s,$0;p=0;s=""}' file

您可以尝试
gnu awk

您可以使用
awk'/10\.1\./&/open/'RS=”“文件
如果每5行被空行分割

$awk'开始{RS=“;FS=OFS=“\n”}$5~/open/{print$1,$5}文件
$ awk 'BEGIN{RS="";FS=OFS="\n"} $5~/open/{ print $1, $5 }' file
Nmap scan report for 10.1.0.2
<br>22/tcp  open  ssh
Nmap scan report for 10.1.0.3
<br>22/tcp  open  ssh
10.1.0.2的Nmap扫描报告
22/tcp开放ssh 10.1.0.3的Nmap扫描报告
22/tcp开放ssh
或者,如果您愿意:

$ awk 'BEGIN{RS="";ORS="\n\n";FS=OFS="\n"} $5~/open/{ print $1, $5 }' file
Nmap scan report for 10.1.0.2
<br>22/tcp  open  ssh

Nmap scan report for 10.1.0.3
<br>22/tcp  open  ssh
$awk'BEGIN{RS=”“;ORS=“\n\n;FS=OFS=“\n”}$5~/open/{print$1,$5}”文件
10.1.0.2的Nmap扫描报告

22/tcp开放ssh 10.1.0.3的Nmap扫描报告
22/tcp开放ssh
谢谢你的帮助。。后者正是我一直在寻找的。。谢谢大家抽出时间。。再次感谢Ed..@DavidGarcia不客气,如果这是您想要的答案,请单击旁边的复选标记。
$ awk 'BEGIN{RS="";ORS="\n\n";FS=OFS="\n"} $5~/open/{ print $1, $5 }' file
Nmap scan report for 10.1.0.2
<br>22/tcp  open  ssh

Nmap scan report for 10.1.0.3
<br>22/tcp  open  ssh