以下命令按预期工作。
grep -B3 'Max_value: 127' proc_*.*
但是我需要比较最大值的数量并找出它是否介于127和200之间。
grep -B3 'Max_value: (>127 and <200)' proc_*.*
答案 0 :(得分:3)
grep -B3 -E '^Max_value: (12[789]|1[3-9][0-9]|200)$' proc_*.*
-E
使用扩展模式,允许在不转义的情况下进行交替。否则:
grep -B3 '^Max_value: \(12[89]\|1[3-9][0-9]\)$' proc_*.*
答案 1 :(得分:1)
使用awk完成任务。原因是,比手动输入字符类更容易比较数字。如果您需要检查更广泛的范围,该怎么办?
$ cat file
0
1
2
3
Max_value: 127
a
b
c
d
Max_value: 130
blah1
blah2
blah3
blah4
Max_value: 200
Z
Y
W
X
Max_value: 2001
$ awk -F":" '{a[NR%3]=$0} /Max_value/&&$2>=127&&$2<=200 {for(i=NR+1;i<=NR+3;i++)print a[i%3] }' file
2
3
Max_value: 127
c
d
Max_value: 130
blah3
blah4
Max_value: 200
答案 2 :(得分:0)
我打赌你在这种情况下使用awk
会更好,但是因为你要求使用grep解决方案:
$ cat values.txt
Max_value: 123
Max_value: 600
Max_value: 126
Max_value: 128
Max_value: 130
Max_value: 111
Max_value: 199
Max_value: 200
Max_value: 155
Max_value: 250
$ grep -E "Max_value: (12[89]|1[3-9][0-9])" values.txt
Max_value: 128
Max_value: 130
Max_value: 199
Max_value: 155
答案 3 :(得分:0)
grep 'Max_value:' proc_*.* | awk ' $2 ~ /[0-9]{3}$/ && $2 > 127 && $2 < 200 '
编辑:添加检查(3位数字)$。