LoginSignup
1
1

More than 1 year has passed since last update.

正規表現で、●●を含む行のみを残す、●●を含む行のみを消す。

Posted at

何かのログを見たり加工したりする時、以下の正規表現を良く使用しています。
本当に良く使用するものなので、VPCフローログを参考に以下内容の正規表現を書いてみます。
検証は「サクラエディタ」で行ってます。

●●を含む行のみを残す    ※例:「Error」行のみ取り出したい、通信拒否されてるものだけ見たい
●●を含む行のみを消す    ※例:「Infomation」行のみ要らない、NODATA行は要らない

目次
1 サンプルログ:VPCフローログ
2 ●●を含む行のみを残す
 2-1 「ACCEPT」を含む行のみを残す。
 2-2 「REJECT」を含む行のみを残す。
 2-3 「プライベートIPアドレス」を含む行のみを残す。
 2-4 「特定のIPアドレス」を含む行のみを残す。
3 ●●を含む行のみを消す
 3-1 「ACCEPT」を含む行のみを消す。
 3-2 「REJECT」を含む行のみを消す。
 3-3 「プライベートIPアドレス」を含む行のみを消す。
 3-4 「特定のIPアドレス」を含む行のみを消す。
4 サンプルログ内で使えそうな正規表現
 4-1 年-月-日
 4-2 時:分:秒
 4-3 ポート番号とかの数字をHITさせる場合、前後に「半角空白」を付けると楽です。


1 サンプルログ:VPCフローログ

動作検証用に以下のログを用意しました。
本記事の確認で利用する際はテキストファイルに移して、サクラエディタで開いてください。
※一番最後の空行までコピーしてください。

サンプル:VPCフローログ
2021-09-19T18:43:30.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 129.250.35.250 123 123 17 1 76 1632077010 1632077041 REJECT OK
2021-09-19T18:45:05.000Z 2 122295887337 eni-0ffab6a423aba9790 192.168.11.4 194.0.5.123 123 123 17 1 76 1632077105 1632077161 REJECT OK
2021-09-19T18:46:03.000Z 2 122295887337 eni-04d996ec40472c0a8 - - - - - - - 1632077163 1632077236 - NODATA
2021-09-19T18:46:12.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 103.202.216.35 123 123 17 1 76 1632077172 1632077221 REJECT OK
2021-09-19T18:48:03.000Z 2 122295887337 eni-0ffab6a423aba9790 - - - - - - - 1632077283 1632077401 - NODATA
2021-09-19T18:48:11.000Z 2 122295887337 eni-04d996ec40472c0a8 - - - - - - - 1632077291 1632077356 - NODATA
2021-09-19T18:50:06.000Z 2 122295887337 eni-04d996ec40472c0a8 - - - - - - - 1632077406 1632077536 - NODATA
2021-09-19T18:51:30.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 172.105.204.167 123 123 17 1 76 1632077490 1632077521 REJECT OK
2021-09-19T18:51:30.000Z 2 122295887337 eni-0ffab6a423aba9790 192.168.11.4 52.119.223.48 49202 443 6 5 300 1632077490 1632077521 ACCEPT OK
2021-09-19T18:51:30.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 52.119.223.48 49204 443 6 5 300 1632077490 1632077581 ACCEPT OK
2021-09-19T18:52:46.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 124.41.72.52 123 123 17 1 76 1632077566 1632077581 REJECT OK
2021-09-19T18:52:46.000Z 2 122295887337 eni-0ffab6a423aba9790 172.31.11.4 52.119.223.48 49210 443 6 5 300 1632077566 1632077581 ACCEPT OK
2021-09-19T18:52:46.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 52.119.223.48 49212 443 6 2 120 1632077566 1632077581 ACCEPT OK
2021-09-19T18:53:13.000Z 2 122295887337 eni-04d996ec40472c0a8 - - - - - - - 1632077593 1632077656 - NODATA
2021-09-19T18:53:30.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 129.250.35.251 123 123 17 1 76 1632077610 1632077641 REJECT OK
2021-09-19T18:53:30.000Z 2 122295887337 eni-0ffab6a423aba9790 172.16.11.4 52.119.223.48 49212 443 6 3 180 1632077610 1632077641 ACCEPT OK
2021-09-19T18:54:30.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 133.18.174.255 123 123 17 1 76 1632077670 1632077701 REJECT OK
2021-09-19T18:55:13.000Z 2 122295887337 eni-04d996ec40472c0a8 - - - - - - - 1632077713 1632077836 - NODATA
2021-09-19T18:55:13.000Z 2 122295887337 eni-0ffab6a423aba9790 - - - - - - - 1632077713 1632077881 - NODATA
2021-09-19T18:58:13.000Z 2 122295887337 eni-04d996ec40472c0a8 - - - - - - - 1632077893 1632077956 - NODATA
2021-09-19T18:58:14.000Z 2 122295887337 eni-0ffab6a423aba9790 - - - - - - - 1632077894 1632078001 - NODATA
2021-09-19T19:00:07.000Z 2 122295887337 eni-04d996ec40472c0a8 - - - - - - - 1632078007 1632078137 - NODATA
2021-09-19T19:00:23.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 162.159.200.123 123 123 17 1 76 1632078023 1632078061 REJECT OK
2021-09-19T19:01:28.000Z 2 122295887337 eni-0ffab6a423aba9790 10.20.11.4 45.32.30.244 123 123 17 1 76 1632078088 1632078121 REJECT OK
2021-09-19T19:02:30.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 108.61.223.189 123 123 17 1 76 1632078150 1632078181 REJECT OK
2021-09-19T19:03:09.000Z 2 122295887337 eni-04d996ec40472c0a8 - - - - - - - 1632078189 1632078257 - NODATA
2021-09-19T19:03:30.000Z 2 122295887337 eni-0ffab6a423aba9790 10.0.11.4 129.250.35.251 123 123 17 1 76 1632078210 1632078242 REJECT OK
2021-09-19T19:05:12.000Z 2 122295887337 eni-04d996ec40472c0a8 - - - - - - - 1632078312 1632078437 - NODATA



2_●●を含む行のみを残す

2-1 「ACCEPT」を含む行のみを残す。

「ACCEPT」はVPCフローログで通信が許可されたもの。

# 置換前文字列
^(?!.*(ACCEPT)).*\R

# 置換後文字列
(空欄)

2-2 「REJECT」を含む行のみを残す。

「REJECT」はVPCフローログで通信拒否されたもの。

# 置換前文字列
^(?!.*(REJECT)).*\R

# 置換後文字列
(空欄)

2-3 「プライベートIPアドレス」を含む行のみを残す。

# 置換前文字列
## Class-A & B & C
### <簡易> 第1オクテットが「10, 172, 192」であるかどうかだけ見てます。
^(?!.*((10|172|192)\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})).*\R

### <詳細> 第1, 第2オクテットまでちゃんとプライベートIPかを見ます。
^(?!.*((10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|172\.(1[6-9]|2[0-9]|3[01])\.[0-9]{1,3}\.[0-9]{1,3}|192\.168\.[0-9]{1,3}\.[0-9]{1,3}))).*\R

## Class-A
### 第1オクテットが「10」であるかを見てます。
^(?!.*(10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})).*\R

## Class-B
### 第1オクテットが「172」, 第2オクテットが「16~31」であるかを見てます。
^(?!.*(172\.(1[6-9]|2[0-9]|3[01])\.[0-9]{1,3}\.[0-9]{1,3})).*\R

## Class-C
### 第1, 第2オクテットが「192.168」であるかを見てます。
^(?!.*(192\.168\.[0-9]{1,3}\.[0-9]{1,3})).*\R


# 置換後文字列
(空欄)

2-4 「特定のIPアドレス」を含む行のみを残す。

# 置換前文字列
## 「.」は正規表現の「改行を除く任意の1文字」となってしまうため「\」でエスケープする。
^(?!.*(129\.250\.35\.251)).*\R

# 置換後文字列
(空欄)


3 ●●を含む行のみを消す

3-1 「ACCEPT」を含む行のみを消す。

「ACCEPT」はVPCフローログで通信が許可されたもの。

# 置換前文字列
.*(ACCEPT).*\R

# 置換後文字列
(空欄)

3-2 「REJECT」を含む行のみを消す。

「REJECT」はVPCフローログで通信拒否されたもの。

# 置換前文字列
.*(REJECT).*\R

# 置換後文字列
(空欄)

3-3 「プライベートIPアドレス」を含む行のみを消す。

# 置換前文字列
## Class-A & B & C
### <簡易> 第1オクテットが「10, 172, 192」であるかどうかだけ見てます。
.*((10|172|192)\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*\R

### <詳細> 第1, 第2オクテットまでちゃんとプライベートIPかを見ます。
.*((10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|172\.(1[6-9]|2[0-9]|3[01])\.[0-9]{1,3}\.[0-9]{1,3}|192\.168\.[0-9]{1,3}\.[0-9]{1,3})).*\R

## Class-A
### 第1オクテットが「10」であるかを見てます。
.*(10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*\R

## Class-B
### 第1オクテットが「172」, 第2オクテットが「16~31」であるかを見てます。
.*(172\.(1[6-9]|2[0-9]|3[01])\.[0-9]{1,3}\.[0-9]{1,3}).*\R

## Class-C
### 第1, 第2オクテットが「192.168」であるかを見てます。
.*(192\.168\.[0-9]{1,3}\.[0-9]{1,3}).*\R


# 置換後文字列
(空欄)

3-4 「特定のIPアドレス」を含む行のみを消す。

# 置換前文字列
## 「.」は正規表現の「改行を除く任意の1文字」となってしまうため「\」でエスケープする。
.*(129\.250\.35\.251).*\R

# 置換後文字列
(空欄)

4 サンプルログ内で使えそうな正規表現

4-1 年-月-日

## 簡易
20[0-9]{2}-[0-9]{2}-[0-9]{2}
## 詳細 ※月は「01~12」、日は「01~31」を指定。
20[0-9]{2}-[0-1][0-9]-(0[1-9]|[1-2][0-9]|3[0-1])

4-2 時:分:秒

## 簡易
[0-9]{2}:[0-9]{2}:[0-9]{2}
## 詳細 ※時は「00~23」、分と秒は「00~59」を指定。
([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])

4-3 ポート番号とかの数字をHITさせる場合、前後に「半角空白」を付けると楽です。

# ポート番号: 443
\s443\s   ※「\s」は半角空白を含む、空白文字。タブとか改行コードにも反応する。
 443      ※前後に「半角空白を付ける」

# 詳細 ※半角空白を前後に含むけど、半角空白部分は選択されない。
(?<=^|\s)443(?= |/)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1