示例文件:
TCP 192.168.56.224:80 rr
-> 192.168.56.112:80 Route 1 0 0
-> 192.168.56.113:80 Route 1 0 0
TCP 192.168.56.225:80 rr
-> 192.168.56.109:80 Route 1 0 0
-> 192.168.56.110:80 Route 1 0 0
TCP 192.168.56.226:80 rr
-> 192.168.56.3:80 Route 1 0 0
UDP 192.168.56.224:80 rr
-> 192.168.56.112:80 Route 1 0 0
-> 192.168.56.113:80 Route 1 0 0
UDP 192.168.56.225:80 rr
-> 192.168.56.109:80 Route 1 0 0
-> 192.168.56.110:80 Route 1 0 0
UDP 192.168.56.226:80 rr
-> 192.168.56.3:80 Route 1 0 0
-> 192.168.56.120:80 Route 1 0 0
我希望根据从键盘输入的模式并使用awk或sed命令打印相应的TCP和UDP块。
示例:输入192.168.56.110:80值,然后打印结果是:
TCP 192.168.56.225:80 rr
-> 192.168.56.109:80 Route 1 0 0
-> 192.168.56.110:80 Route 1 0 0
UDP 192.168.56.225:80 rr
-> 192.168.56.109:80 Route 1 0 0
-> 192.168.56.110:80 Route 1 0 0
请帮帮我。
发布于 2018-06-22 08:12:05
下面是一种使用gnu awk
的替代方法
awk -v RS='(^|\n)(TC|UD)P[[:blank:]]' -v ip='192.168.56.110:80' 'index($0, ip) {
print RT $0}' file
TCP 192.168.56.225:80 rr
-> 192.168.56.109:80 Route 1 0 0
-> 192.168.56.110:80 Route 1 0 0
UDP 192.168.56.225:80 rr
-> 192.168.56.109:80 Route 1 0 0
-> 192.168.56.110:80 Route 1 0 0
发布于 2018-06-22 07:49:13
请你试着跟我说一下,如果这对你有帮助的话,请告诉我。
cat script.ksh
echo "Please enter the ip address which you want to print:"
read value
awk -v val="$value" '/^TCP/||/^UDP/{value=""}!flag{value=value?value ORS $0:$0} $0 ~ val{flag=1} flag{print value;value=flag=""}' Input_file
它将要求运行该脚本的人输入IP,当用户输入该脚本时,它将查看Input_file。
https://stackoverflow.com/questions/50982982
复制相似问题