说我有一个以下文本文件(Nmap的.gnmap),我想要显示我的比赛和相应的IP地址。即仅显示22/open
和2000/open
以及这两个端口的IP。我需要这个结果:
10.10.10.1 22/open 2000/open
10.10.10.2 2000/open
获取IP很简单grep -iE "22/open|2000/open" file
,但是我还如何显示IP?我需要以下输出(只要每行包含IP和端口,确切的多余字符都没有关系):
示例源文件:
Host: 10.10.10.1 () Ports: 22/open/tcp//ssh///, 80/open/tcp//http///, 113/closed/tcp//ident///, 443/open/tcp//https///, 541/open/tcp//uucp-rlogin///, 2000/open/tcp//cisco-sccp/// Ignored State: filtered (4994)
Host: 10.10.10.2 () Ports: 113/closed/tcp//ident///, 2000/open/tcp//cisco-sccp/// Ignored State: filtered (4998)
答案 0 :(得分:0)
请您尝试以下。
awk '
match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){
ip_found=substr($0,RSTART,RLENGTH)
}
{
while(match($0,/22\/open|2000\/open/)){
val=(val?val OFS:"")substr($0,RSTART,RLENGTH)
$0=substr($0,RSTART+RLENGTH)
}
if(ip_found){
print ip_found,val
}
ip_found=val=""
}
' Input_file
输出如下。
10.10.10.1 22/open 2000/open
10.10.10.2 2000/open