awkとsedによる情報の抽出

awkとsedによる情報の抽出

隣のIPを抽出したいです(axyz-pc)。正規表現を使用するコマンドでこれを実行しましたgrep。しかし、awkとsedを通して抽出する必要があります。 grep -Po '(?<='axyz-pc')[^:]+' logs | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'| sort -nr| uniq -c |sort -nr

丸太:

2017-04-11 15:15:00 SMTP connection from (axyz-pc) [36.32.138.106]:1236 I=[10.10.19.36]:25 closed by DROP in ACL
2017-04-11 15:15:01 H=(axyz-pc) [114.225.87.41]:3823 I=[10.10.19.36]:25 rejected EHLO or HELO axyz-pc: HELO/EHLO - HELO on heloblocks Blocklist
2017-04-11 15:15:01 SMTP connection from (axyz-pc) [114.225.87.41]:3823 I=[10.10.19.36]:25 closed by DROP in ACL
2017-04-11 15:15:02 H=(axyz-pc) [36.32.138.216]:1984 I=[10.10.19.36]:25 rejected EHLO or HELO axyz-pc: HELO/EHLO - HELO on heloblocks Blocklist
2017-04-11 15:15:02 SMTP connection from (axyz-pc) [36.32.138.216]:1984 I=[10.10.19.36]:25 closed by DROP in ACL
2017-04-11 15:15:02 H=(axyz-pc) [37.49.224.14]:51593 I=[10.10.19.36]:25 rejected EHLO or HELO axyz-pc: HELO/EHLO - HELO on heloblocks Blocklist
2017-04-11 15:15:02 SMTP connection from (axyz-pc) [37.49.224.14]:51593 I=[10.10.19.36]:25 closed by DROP in ACL
2017-04-11 15:15:02 H=(axyz-pc) [36.32.138.106]:4619 I=[10.10.19.36]:25 rejected EHLO or HELO axyz-pc: HELO/EHLO - HELO on heloblocks Blocklist

出力は次のようになります(冗長IPは重複しません)。

36.32.138.106
114.225.87.41
36.32.138.216
37.49.224.14

ベストアンサー1

なぜ停止しているのかよくわかりませんgrep。もっと詳しく見てください。しかし、ここではperlreは必要ありません。次の操作が実行されます(少なくとも提供された例では)。

grep -o 'axyz-pc) \[[^]]*' | grep -o '[^[]*$'

出力:

36.32.138.106
114.225.87.41
114.225.87.41
36.32.138.216
36.32.138.216
37.49.224.14
37.49.224.14
36.32.138.106

次に、数字で並べ替えて適用しますuniq

sort -t. -k1,1n -k2,2n -k3,3n -k4,4n | uniq

出力:

36.32.138.106                                                             
36.32.138.216
37.49.224.14
114.225.87.41

おすすめ記事