Bash 是否有一个函数允许我在文本文件中的一组行的开头加上一个字符串?
我试图将IP地址(在下面的屏幕截图中)预先添加到每行的开头,以获得它们的相对结果 当前文件格式:Bash 是否有一个函数允许我在文本文件中的一组行的开头加上一个字符串?,bash,awk,sed,Bash,Awk,Sed,我试图将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
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
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
我已使用以下方法将第一个IP地址附加到每行的开头:
awk 'NR==1{IP="IP" FS $2 FS}NR!=1{$0=IP $0;print}' IPadd.txt > new.txt
是否有任何方法修改此函数,以便我可以在每行的开头使用不同的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
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
你能试试下面的吗
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
这可能适用于您(GNU-sed):
复制当前主机行并将其附加到非主机行,操纵主机行以仅显示ip地址。您要查找的单词是“prepend”;“append”是指在其他东西的末尾添加一些东西。你是个天才:-)@jas,:)我相信是你,因为你也发布了很好的代码,伙计:)NF有什么意义?OP中没有空行example@oguzismail,我很确定OP编辑了那条空行,当我第一次在我的系统上运行它时,它只打印了一行IP(我的内存很好:),所以为了避免我这样做,后来他/她会删除它。@RavinderSingh13我在输入代码时出错,事实上,文本文件中没有我想要预加的空行。