2014-01-17 51 views
0

我正在查看現有腳本,並試圖瞭解某個行的功能。我有以下命令:瞭解Grep模式 - 示例

grep -v "[0-9]\{8\}030[0-9]\{4\}" 

並不能以'真正'的術語理解我在找什麼。我知道,因爲它是一個-v,它正在尋找沒有這個模式的每一行int int;但不知道該模式是什麼。

從我能解釋的,我認爲它應該尋找(用N代表0到9的任何數字) n {8} 300n {4};但這是沒有意義的,因爲它正在搜索的日誌文件不包含任何與此相關的內容。正在搜索的日誌文件包含時間字符串,如201401100528086;所以我確定grep排除一定的時間..但我不能肯定地說。

回答

1

{n}是一個重複計數,它與其左側的原子完全匹配n拷貝。因此,我們可以打破該表達式爲以下幾個部分:

[0-9] {8}  - match 8 digits 
030   - match "030" exactly 
[0-9] {4}  - match 4 digits 

所以這個模式匹配任何包含"########030####"其中每個#是一個數字0到9

如果它檢查字符串形式YYYYmmddHHMMSS的似乎是這種情況,這種模式似乎被設計爲匹配在凌晨3點和凌晨3點10分之間發生的任何時間字符串。

0

它似乎說:不要給我看日誌條目,其中小時爲'3',分鐘以'0'開始(0300-0309)