Подсветка синтаксиса в vim
может быть превращен прочь/на с :syntax off
и :syntax on
.
В 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
поместите обратную косую черту перед последней скобкой в строке (который несопоставлен) [специальный символ в 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 или нет.