2016-07-18 17 views
0

我一直在努力解決這個問題很長一段時間,我是一個初學者,使用像grep/sed/awk/cut這樣的工具,以及正則表達式中的初學者。我需要解析出Cisco ASA防火牆日誌,以便在僅留下IP地址的情況下修剪包含IP地址的「列」。請看下面的例子。Grep/Sed/Awk修改特定列中的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]

老實說,我不認爲這是值得的,張貼的內容,我這樣做的遠因爲我確信我正在接近這個錯誤的方式。

我真的很感謝你的幫助。

+1

你能告訴你的期望輸出樣本數據的一些行。 – anubhava

+0

你有沒有做過任何嘗試?我們可以看到它嗎? –

回答

1

隨着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 
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 

來源:Regular expression to match DNS hostname or IP Address?

要添加一些自定義文本每個地址,添加到上面:

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