Linux 如何grep数字范围
在文本文件中,我有以下条目:Linux 如何grep数字范围,linux,bash,grep,Linux,Bash,Grep,在文本文件中,我有以下条目: 10.1.0.10-15 10.1.0.20-25 10.1.0.30-35 10.1.0.40-45 我想打印10.1.0.10,15,20,25,30 cat file | grep 10.1.0.[1,2,3][0.5] -- prints 10,15,20,25,30, 35. 我该如何抑制35岁 我不想使用grep-v.35…只想打印特定的IP或#s。您可以使用: grep -E '10\.1\.0\.([12][05]|30)' file 但是,a
10.1.0.10-15
10.1.0.20-25
10.1.0.30-35
10.1.0.40-45
我想打印10.1.0.10,15,20,25,30
cat file | grep 10.1.0.[1,2,3][0.5] -- prints 10,15,20,25,30, 35.
我该如何抑制35岁
我不想使用grep-v.35…只想打印特定的IP或#s。您可以使用:
grep -E '10\.1\.0\.([12][05]|30)' file
但是,awk将更具可读性:
awk -F '[.-]' '$4%5 == 0 && $4 >= 10 && $4 <= 30' file
10.1.0.10-15
10.1.0.20-25
10.1.0.30-35
awk-F'[.-]'$4%5==0&&$4>=10&&$4您可以使用:
grep -E '10\.1\.0\.([12][05]|30)' file
但是,awk将更具可读性:
awk -F '[.-]' '$4%5 == 0 && $4 >= 10 && $4 <= 30' file
10.1.0.10-15
10.1.0.20-25
10.1.0.30-35
awk-F'[.-]'$4%5==0&&$4>=10&&$4请注意,字符类中的、
和
是不需要的-事实上,它们与您不希望模式匹配的数据相匹配。此外,字符类之外的
匹配任何字符(数字、字母或
),您需要使用反斜杠对其进行转义,以便它们只匹配实际的
此外,您正在犯(UUoC)错误grep
可以很好地读取文件
至于要做什么,可能使用:
grep -E '10\.1\.0\.([12][05]|30)' file
它使用扩展正则表达式(以前用于egrep
,现在用于grep-E
)。它还避免了点与任何字符的匹配。请注意,字符类中的、
和
是不需要的-事实上,它们与您不希望模式匹配的数据相匹配。此外,字符类之外的
匹配任何字符(数字、字母或
),您需要使用反斜杠对其进行转义,以便它们只匹配实际的
此外,您正在犯(UUoC)错误grep
可以很好地读取文件
至于要做什么,可能使用:
grep -E '10\.1\.0\.([12][05]|30)' file
它使用扩展正则表达式(以前用于egrep
,现在用于grep-E
)。它还避免了点与任何字符的匹配。我不确定您是否只需要打印前两个IP,不包括35个IP。在这种情况下,cat文件| grep“10.1.0.[1-3]0.[15 | 25]”
完成这项工作
请记住,您可以使用诸如|之类的条件表达式来帮助您。我不确定您想要的是否只是打印前两个IP,不包括35个IP。在这种情况下,cat文件| grep“10.1.0.[1-3]0.[15 | 25]”
完成这项工作
请记住,您可以使用诸如|
之类的条件表达式来帮助您。不清楚输出应该是什么样子。请清楚地显示grep
现在在v2.16
上,因此您应该从升级到.35
,输出应该是什么样子还不清楚。请清楚地显示grep
现在在v2.16
上,因此您应该从.35
升级您的awk
变量对样本数据有效,但显然应该包括$4%5==0
作为一个条件。谢谢,是的,这样会更安全。很高兴知道它成功了,您的awk
变量对样本数据有效,但显然应该包括$4%5==0
作为一个条件。谢谢,这样会更安全。很高兴知道它成功了,请注意您的grep'10.1.0.[1-3]0.[15| 25]
将接受10x1y0z20@
。x、y、z和@
匹配,因为
匹配任何字符;|
匹配,因为|
在字符类[…]
中没有特殊意义。即使在字符类之外,|
也没有特殊意义,除非您使用-E
选项启用扩展正则表达式或ERE。请注意,grep'10.1.0.[1-3]0.[15 | 25]
将接受10x1y0z20@
。x、y、z和@
匹配,因为
匹配任何字符;|
匹配,因为|
在字符类[…]
中没有特殊意义。即使在字符类之外,|
也没有特殊意义,除非使用-E
选项启用扩展正则表达式或ERE。