Regex 在这种情况下如何在awk中使用正则表达式?

Regex 在这种情况下如何在awk中使用正则表达式?,regex,awk,Regex,Awk,我正在使用nmap进行网络扫描 结果如下: Nmap scan report for 30.142.41.52 Host is up. PORT STATE SERVICE 8080/tcp open http-proxy Nmap scan report for 51.136.230.94 Host is up. PORT STATE SERVICE 8080/tcp filtered http-proxy Nmap scan report for 58.1

我正在使用nmap进行网络扫描

结果如下:

Nmap scan report for 30.142.41.52
Host is up.

PORT     STATE    SERVICE
8080/tcp open http-proxy

Nmap scan report for 51.136.230.94
Host is up.

PORT     STATE    SERVICE
8080/tcp filtered http-proxy

Nmap scan report for 58.188.208.42
Host is up.

PORT     STATE    SERVICE
8080/tcp filtered http-proxy
我只是想知道如何使用grep或awk,只保存状态“open”结果并将其保存在文本文件中

我试过类似于

awk '{print $5}' | sort -n > IPs
但是它只保存IP,那么如何在awk中使用正则表达式来保存处于打开状态的IP呢

提前谢谢大家,, 当做
//terrisa

使用awk,您可以使用您选择的字符串设置记录分隔符(RS),字段分隔符(FS)也是如此:

通过这种方式,awk不再逐行工作,而是逐块工作(从每个“Nmap扫描报告”到下一个);字段分隔符是一个换行符(这意味着第一个字段是IP,第五个字段是行
8080/tcp open http proxy

请注意,如果使用gawk,则可以将每个IP存储在一个数组中,并使用该函数,而不是将结果管道化到
排序

awk '/^Nmap/{ip=$5}; / open /{print ip}' file

输出:

30.142.41.52 30.142.41.52
请共享您所共享的此示例
nmap
的所需结果。通过这种方式,我们可以准确地知道如何编写awk来满足您的期望。@jnevil nmap-n-Pn-pt:80-T5-ir10 | awk'{print$5}我很抱歉。我希望得到的是,在awk得到它的手后,你希望这个如何处理。如果端口80打开,您只是想让它吐出IP,或者如果端口80打开,您想让它打印IP和其他数据吗?您应该提到,只有GNU awk允许多字符RS字符串。
awk '$1=="Nmap"{ip=$5}; $2=="open"{print ip}' file
30.142.41.52