您好我有一些日志文件可以记录软件的执行时间,在日志文件中的某处我有与此类似的行:
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 7198ms
如果我grep "BuildStops.BuildStop.AddConsignee:" System_2013626.log
我可以得到所有的行,但我正在尝试创建一个模式,允许我找到包含执行时间超过10,000毫秒的行
请帮助
答案 0 :(得分:2)
易:
grep -E "BuildStops\.BuildStop\.AddConsignee: ([5-9][0-9]{3}|[0-9]{5})" System_2013626.log
仅当该位置存在(至少)五位数时才匹配该行,或者至少以5
开头的四位数字匹配。另外,不要忘记逃避字面点。
答案 1 :(得分:2)
使用以下内容:
grep -E "BuildStops.BuildStop.AddConsignee: [[:digit:]]{5}" file
它查找5位数字,即模式数> = 10,000完成。
$ cat file
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 7198ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 17198ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 171898ms
$ grep -E "BuildStops.BuildStop.AddConsignee: [[:digit:]]{5}" file
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 17198ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 171898ms
所以我希望它更有活力,有时我想要寻找 有时10,000我想找4000以上
我们可以将4000定义为:
- [4-9]
加3位数
- 至少5位数。
$ cat file
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 7198ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 71998ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 3198ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 17198ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 171898ms
12345
$ grep -E "BuildStops.BuildStop.AddConsignee: ([4-9][[:digit:]]{3}|[[:digit:]]{5})" file
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 7198ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 71998ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 17198ms
6/26/2013 6:56:43 AM - >>> BuildStops.BuildStop.AddConsignee: 171898ms
答案 2 :(得分:0)
使用GNU grep进行测试
grep -E "BuildStops.BuildStop.AddConsignee:.*[[:digit:]]{5,}ms"
答案 3 :(得分:0)
此模式可以匹配10000ms,100000ms等。它与9999ms不匹配。
grep -E 'BuildStops.BuildStop.AddConsignee:[[:space:]]+[[:digit:]]{5,}ms'
答案 4 :(得分:0)
怎么样
^[1-9]([0-9]){4}
以数字1-9开头,然后是4位或更多数字0
所以
"BuildStops.BuildStop.AddConsignee: [1-9]([0-9]){4}"
答案 5 :(得分:0)
grep "BuildStops\.BuildStop\.AddConsignee: \+[1-9][0-9]\{4,\}ms"
空格后的\+
匹配“至少一个”空格。 \{4,\}
之后的[0-9]
表示0到9之间的“至少4”数字。
答案 6 :(得分:0)
awk
解决方案:
awk '/BuildStops\.BuildStop\.AddConsignee:/ && $NF+0>10000' System_2013626.log
$NF+0
将在整数中评估执行时间,丢弃 ms 。