2014-01-17 53 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)