了解Grep模式 - 示例

时间:2014-01-17 22:27:48

标签: linux design-patterns grep

我正在查看现有脚本,并试图了解某条线的作用。我有以下命令:

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

无法用“真实”的术语来理解我在寻找什么。我知道因为它是一个-v,它正在寻找没有这种模式的每一行;但无法弄清楚模式是什么。

从我可以破译的内容来看,我认为它应该寻找(使用N代表任何数字0到9) N {8} 300N {4};但这没有任何意义,因为它搜索的日志文件不包含任何接近此的内容。被搜索的日志文件确实包含一个时间字符串,例如201401100528086;所以我确定grep排除了一段时间..但我不能肯定地说。

2 个答案:

答案 0 :(得分: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分之间发生的任何时间字符串。

答案 1 :(得分:0)

似乎说:不要显示小时为“3”且小时以“0”(0300 - 0309)开头的日志条目