我有一種情況,我試圖使用awk來查找模式並在找到模式後添加10行內容。我試着用下面的工作,但在輸入不起作用如何使用awk在模式後添加多行
內容iptable.txt文件:
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
iptables.txt的輸出應該像執行
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
awk的功能:
awk '/--dport 22 -j ACCEPT/{print $0 RS
"-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT"
"-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT"
"-A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT"
} 1' > tmp && mv tmp /home/user/iptables.txt
簡而言之,我試圖完成的是當我執行awk命令時,它將肩膀d追加與線DPORT 20,21和23
感謝威廉 - 我嘗試awk之前試過sed。 sed抱怨' - '(破折號),當我試圖逃避\,然後它抱怨'\'。 – AmigoSe
@GanSe你能準確地展示你試圖對sed抱怨嗎?和哪個版本的sed。 –