3

我正在尝试将 IP 地址(在下面的屏幕截图中)添加到每行的开头以获得它们的相对结果。

显示当前结果格式的文本文件

当前文件格式:

Host: 192.168.1.4 ()    
21  open    tcp     ftp     vsftpd 2.3.4    
23  open    tcp     telnet      Linux telnetd   
25  open    tcp     smtp        Postfix smtpd   
53  open    tcp     domain      ISC BIND 9.4.2    
Host: 192.168.1.6 ()    
21  open    tcp     ftp     Microsoft ftpd  
25  open    tcp     smtp        Microsoft ESMTP 6.0.2600.2180   
80  open    tcp     http        Microsoft IIS httpd 5.1 
135 open    tcp     msrpc       Microsoft Windows RPC   
139 open    tcp     netbios-ssn     Microsoft Windows netbios-ssn   

我设法使用以下命令将第一个 IP 地址附加到每一行的开头:

awk 'NR==1{IP="IP" FS $2 FS}NR!=1{$0=IP $0;print}' IPadd.txt > new.txt

有什么办法可以修改这个函数,这样我就可以在每行的开头有不同的 IP 并生成一个像这样的文件:

我希望新的文本文件读取:

192.168.1.4 21  open    tcp     ftp     vsftpd 2.3.4    
192.168.1.4 23  open    tcp     telnet      Linux telnetd   
192.168.1.4 25  open    tcp     smtp        Postfix smtpd   
192.168.1.4 53  open    tcp     domain      ISC BIND 9.4.2
192.168.1.6 21  open    tcp     ftp     Microsoft ftpd  
192.168.1.6 25  open    tcp     smtp        Microsoft ESMTP 6.0.2600.2180   
192.168.1.6 80  open    tcp     http        Microsoft IIS httpd 5.1 
192.168.1.6 135 open    tcp     msrpc       Microsoft Windows RPC   
192.168.1.6 139 open    tcp     netbios-ssn     Microsoft Windows netbios-ssn   
4

2 回答 2

3

请您尝试以下操作。

awk '/^Host:/{ip=$2;next} NF{print ip,$0}'  Input_file

输出如下。

192.168.1.4 21  open    tcp     ftp     vsftpd 2.3.4    
192.168.1.4 23  open    tcp     telnet      Linux telnetd   
192.168.1.4 25  open    tcp     smtp        Postfix smtpd   
192.168.1.4 53  open    tcp     domain      ISC BIND 9.4.2
192.168.1.6 21  open    tcp     ftp     Microsoft ftpd  
192.168.1.6 25  open    tcp     smtp        Microsoft ESMTP 6.0.2600.2180   
192.168.1.6 80  open    tcp     http        Microsoft IIS httpd 5.1 
192.168.1.6 135 open    tcp     msrpc       Microsoft Windows RPC   
192.168.1.6 139 open    tcp     netbios-ssn     Microsoft Windows netbios-ssn
于 2019-04-07T18:18:48.833 回答
1

这可能对您有用(GNU sed):

sed '/^Host/h;//d;G;s/\(.*\)\nHost: \(.*\) ()/\2 \1/' file

制作当前主机行的副本并将其附加到非主机行,操作主机行以仅显示 IP 地址。

于 2019-04-08T09:00:07.690 回答