Grep

使用正則表達式時出現“grep: Unmatched [”錯誤

  • September 5, 2019

我正在嘗試找到與此類似的模式:

tail -n 100000 gateway.log | grep -B10 -A10 'Nov 22 11:13:56 Received Packet from [10.50.98.68'

“11:13:56”可以是任何時間。

這就是我想出的:

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

我不確定當它說“無與倫比”時它指的是什麼

$$ “. This part “[0-9 $$:$$ 0-9 $$:$$ 0-9 $$” 應該是正則表達式。這部分 “[10.50.98.68” 應該是一個字元串。

在 grep 正則表達式中,[是一個特殊字元。對於文字[,您需要使用反斜杠對其進行轉義,如下所示:\[.

請注意,整個 ofNov 22 [0-9]: ... [10.50.98.68是一個正則表達式。你不能只指著它說“這部分是一個正則表達式,這部分應該是一個文字字元串”並期望grep能夠閱讀你的想法。這就是為什麼您需要轉義作為您想要匹配的文字字元串一部分的任何特殊字元的原因。


不相關,但您的正則表達式中的每次出現[0-9]只匹配一個字元。此外,.是一個特殊字元,也需要轉義。您可能需要以下內容作為正則表達式:

^Nov 22 [0-9][0-9]:[0-9][0-9]:[0-9][0-9] Received Packet from \[10\.50\.98\.68

引用自:https://unix.stackexchange.com/questions/102813