Sed grep中范围的使用

Sed grep中范围的使用,sed,awk,grep,Sed,Awk,Grep,以下命令确实按预期工作 grep -B3 'Max_value: 127' proc_*.* 但是我需要比较最大值的数目,看看它是否在127和200之间 grep -B3 'Max_value: (>127 and <200)' proc_*.* grep-B3'最大值:(>127和 -E使用扩展模式,允许在不转义的情况下进行切换。否则: grep -B3 '^Max_value: \(12[89]\|1[3-9][0-9]\)$' proc_*.* -E使用扩展模式,允许在不

以下命令确实按预期工作

grep -B3 'Max_value: 127' proc_*.*
但是我需要比较最大值的数目,看看它是否在127和200之间

grep -B3 'Max_value: (>127 and <200)' proc_*.*
grep-B3'最大值:(>127和
-E
使用扩展模式,允许在不转义的情况下进行切换。否则:

grep -B3 '^Max_value: \(12[89]\|1[3-9][0-9]\)$' proc_*.*
-E
使用扩展模式,允许在不转义的情况下进行切换。否则:

grep -B3 '^Max_value: \(12[89]\|1[3-9][0-9]\)$' proc_*.*

我打赌在这种情况下,使用
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

我打赌在这种情况下,使用
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

在你的任务中使用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
$cat文件
0
1.
2.
3.
最大值:127
A.
B
C
D
最大值:130
胡说八道
废话
废话
废话
最大值:200
Z
Y
W
X
最大值:2001

$awk-F:“{a[NR%3]=$0}/Max_value/&&&&$2>=127&&$2在任务中使用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
$cat文件
0
1.
2.
3.
最大值:127
A.
B
C
D
最大值:130
胡说八道
废话
废话
废话
最大值:200
Z
Y
W
X
最大值:2001
$awk-F:“{a[NR%3]=$0}/Max_value/&&$2>=127&&$2
grep'Max_value:'proc.*.*awk'$2~/[0-9]{3}$/&$2>127&$2<200”
编辑:添加对(3位数字)$的检查。

grep'Max_value:'proc.*.*awk'$2~/[0-9]{3}$/&$2>127&$2<200'

编辑:添加对(3位数字)$的检查。

Nice,但是
(>127 and=127和@Johnsyweb,我假设,因为
127
首先被指定为一个好的输入,所以@shantanuo对between的使用是包容的,不管他的代码实际上说了什么。:)很好。@shantanuo,如果你真的想要包含范围,请查看我的编辑历史记录。:)既然177部分在范围内,建议正则表达式允许“Max_value:1776”通过是否公平?当然,这主要使它变得混乱。很好,但是
(>127 and=127和@Johnsyweb,我认为因为
127
首先被指定为一个好的输入,所以@shantanuo对between的使用是包容性的,不管他的代码实际上说了什么。:)很好@山塔诺,如果你真的想要包含范围,请查看我的编辑历史记录。:)既然177部分在范围内,建议正则表达式允许“最大值:1776”通过是否公平?当然,这主要使它变得凌乱。非常有趣但我得到的是1984-10-17和17:46:07之类的值#是否可以检查2美元的值是否是数字?非常有趣。#但是我得到的值像1984-10-17和17:46:07#是否可以检查2美元的值是否是数字?