我正在尝试将IP地址(在下面的屏幕截图中)放在每一行的开头,以获取相对结果。
Text File showing current format of results
当前文件格式:
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
答案 0 :(得分: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
答案 1 :(得分:2)
这可能对您有用(GNU sed):
sed '/^Host/h;//d;G;s/\(.*\)\nHost: \(.*\) ()/\2 \1/' file
复制当前主机行并将其附加到非主机行中,以操纵主机行以仅显示IP地址。