我有一個 log 檔
格式是這樣
ll62-2-210-251-62.ll62.iam.net.ma[62.251.210.2]:
unknown[99.248.181.16]:
unknown[203.170.234.130]:
atic.arcor-ip.net[178.15.23.2]:
business-178-015-023-002.static.arcor-ip.net[178.15.23.2]:
unknown[99.59.103.92]:
unknown[184.81.169.90]:
static-184-81-169-90.dsl.cavtel.net[184.81.169.90]:
在 linux 環境下
如何把他變成這樣
62.251.210.2
99.248.181.16
203.170.234.130
178.15.23.2
99.59.103.92
184.81.169.90
假設你的 Log 檔名稱是: abc.log, 指令如下:
<pre class="c" name="code">cat abc.log | sed 's/^.*\[//g' | sed 's/\].*$//g'
輸出結果:> 62.251.210.2
99.248.181.16
203.170.234.130
178.15.23.2
178.15.23.2
99.59.103.92
184.81.169.90
184.81.169.90
ll62-2-210-251-62.ll62.iam.net.ma[62.251.210.2]:
unknown[99.248.181.16]:
unknown[203.170.234.130]:
atic.arcor-ip.net[178.15.23.2]:
business-...(恕刪)
如果[ 和 ] 是固定格式輸出:
<pre class="c" name="code">cat abc.log | awk -F[ '{print $2}' | awk -F] '{print $1}'
只需一個指令:
<pre class="c" name="code">egrep -o '[0-9]+(\.[0-9]+){3}' LOG檔
即可。
不過我注意到你輸出最後兩行並沒有重覆的IP,如果還要扣掉重覆的,那就加上 sort:
<pre class="c" name="code">egrep -o '[0-9]+(\.[0-9]+){3}' LOG檔 | sort -u