Запрос захватывает ненужные логи
Задача, из файла main.txt перенести все логи с ошибкой 500 в файл 500.txt(в main.txt так же находятся ошибки с кодом 400). Делаю запрос в консоли grep "3[01]/12/2019:21:3" main.txt | grep '500' > ~/bug1/events/500.txt. После, посмотрев в файл 500.txt внутри обнаруживаются логи с ошибкой 400. Вопрос: почему так и что нужно поменять в запросе чтобы захватывались ТОЛЬКО ошибки с кодом 500?
Пример лога из файла 400.txt.
80.57.170.51 - - [30/12/2019:21:35:12 +0000] "DELETE /users HTTP/1.1" 400 3623
204.235.176.118 - - [30/12/2019:21:35:13 +0000] "POST /users HTTP/1.1" 400 4704
82.95.203.67 - - [30/12/2019:21:35:19 +0000] "DELETE /lists HTTP/1.1" 400 3737
Пример лога из файла 500.txt.
65.47.42.12 - - [30/12/2019:21:37:39 +0000] "PATCH /customers HTTP/1.1" 400 2500
64.250.112.189 - - [30/12/2019:21:35:13 +0000] "PUT /parsers HTTP/1.1" 500 4639
193.253.101.180 - - [30/12/2019:21:35:31 +0000] "PATCH /alerts HTTP/1.1" 500 2944