繁体   English   中英

Grep / Sed / Awk在特定列中修剪IP地址周围的文本以仅保留IP本身?

[英]Grep/Sed/Awk Trim text around IP address in specific column to just leave the IP itself??

我已经为这个问题苦苦挣扎了一段时间,我是使用grep / sed / awk / cut等工具的初学者,也是使用正则表达式的初学者。 我需要解析出一个Cisco ASA防火墙日志,以便对包含IP地址的“列”进行修整,仅保留IP地址。 请参见以下示例。

这个:

Built inbound ICMP connection for faddr [hostname_here]-[ip address]/[port] gaddr [ip address]/[port] laddr [ip address]/[port]

需要对此进行解析:

Built inbound ICMP connection for faddr [ip address] gaddr [ip address] laddr [ip address]

老实说,我认为发布我到目前为止所做的事情是不值得的,因为我敢肯定我会以错误的方式来做。

非常感谢您的帮助。

使用GNU sed:

sed -rn  's/([fgl]addr )([^ -]*[ -])?(([0-9]{1,3}\.){3}[0-9]{1,3})\/[0-9]*/\1\3/gp' file

file包含:

Built inbound ICMP connection for faddr google.com-129.244.54.55/63 gaddr 9.9.123.33/25 laddr 111.87.75.0/8444

输出:

Built inbound ICMP connection for faddr 129.244.54.55 gaddr 9.9.123.33 laddr 111.87.75.0

尝试:

egrep -o "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])" firewall.log

来源: 正则表达式以匹配DNS主机名或IP地址?

要为每个地址添加一些自定义文本,请在上面添加:

| while read ip; do echo "Built inbound ICMP connection for faddr $ip gaddr $ip laddr $ip"; done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM