“grep: Несопоставленный [” ошибка при использовании regex

Подсветка синтаксиса в vim может быть превращен прочь/на с :syntax off и :syntax on.

5
28.11.2013, 01:28
2 ответа

В grep регулярном выражении, [ специальный символ. Для литерала [, Вы должны к обратной косой черте выйти из него, как так: \[.

Обратите внимание что полнота Nov 22 [0-9]: ... [10.50.98.68 регулярное выражение. Вы не можете только указать на него и сказать, что "эта часть является regex, эта часть должна быть литеральной строкой" и ожидать grep смочь считать Ваши мысли. Вот почему необходимо выйти из любых специальных символов, которые являются частью литеральных строк, которым Вы хотите соответствовать.


Не связанный, но каждое возникновение [0-9] в Вашем регулярном выражении только соответствует отдельному символу. Кроме того, . специальный символ, которого должны будут оставить также. Вы, вероятно, хотите что-то как следующее для Вашего регулярного выражения:

^Nov 22 [0-9][0-9]:[0-9][0-9]:[0-9][0-9] Received Packet from \[10\.50\.98\.68
7
27.01.2020, 20:34

поместите обратную косую черту перед последней скобкой в строке (который несопоставлен) [специальный символ в regex для классов.

Таким образом, Вы хотите:

 tail -n 100000 gateway.log | grep -B10 -A10 'Nov 22 [0-9]:[0-9]:[0-9] Received Packet from \[10.50.98.68'

Также как другой ответ говорит, у Вас есть другие проблемы с Вашим regex, как периоды, что Вы хотите быть литеральными, и то, что Вы только допускаете одно число между каждым двоеточием, которое перестанет работать на нескольких разах. В течение времени Вы хотите [0-9]\{1,2\}:[0-9]\{1,2\}:[0-9]\{1,2\} и для IP-адреса, если Вы хотите regex, который будет соответствовать любому допустимому IP-адресу onfly, думают его более сложные, чем Вы. Вы не сказали, изменится ли IP или нет.

4
27.01.2020, 20:34

Теги

Похожие вопросы