例如,我的时间范围如下:
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
而我想要的只是使用grep -E'[1-2] [??]来获取13到20之间的数字 有可能吗?
请不要给出关于awk的答案我不是在问它非常感谢你
答案 0 :(得分:5)
这应该这样做:
^(1[1-9]|2[0-6])$
答案 1 :(得分:4)
|
表示正则表达式中的替换。您可以将其视为逻辑or
。因此:
1[3-9]|20
装置
1,然后是3,4,5,6,7,8或9, OR 2,然后是0
这将匹配指示的任何数字(13,14,15,16,17,18,19或20)。
以上可能是1[1-9]|2[0-6]
,即:
波西米亚人指出。1,然后是1到9 OR 2,然后是0到6
^
和$
零宽度断言锚点分别表示“字符串的开头”和“字符串的结尾”。它们的确切含义可以根据正则表达式的风格而有所不同,但在egrep
和其他基于行的正则表达式风格中它们的意思。如果中的行中有其他字符的可能性,您可能希望使用这些
a13b
&20-
如果您知道该号码将是该特定线路上的所有号码,则不一定非必要。
答案 2 :(得分:0)
您需要将正则表达式括在双引号(“”)中。此外,考虑到更广泛的搜索域,如果数字超过2位,则需要在表达式中添加其他量词。假设您要搜索范围
中的数字1865259000 to 1865361999
你的正则表达式应该是:
"1865259[0-9]{3}|18652[6-9][0-9]{4}|18653[0-6][0-1][0-9]{3}"
花括号内的数字表示该模式应与该次数完全匹配。所以,
[0-9]{2}
表示在0到9之间出现2次数字。