[英]grep - How would I match a regex using only two characters, but with each character occuring the same number of times?
[英]How to match a specific number range with a regex using grep only
例如,我的時間范圍如下:
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
我想要的是僅使用grep -E'[1-2] [??]'從13到20可以獲得數字嗎?
請不要回答有關awk的問題,我不是在問這個問題,非常感謝
應該這樣做:
^(1[1-9]|2[0-6])$
|
表示正則表達式的交替。 您可以將其視為邏輯or
。 從而:
1[3-9]|20
手段
1后跟3、4、5、6、7、8或9, 或 2后跟0
這將與指示的任何數字(13、14、15、16、17、18、19或20)匹配。
上面可能是1[1-9]|2[0-6]
,它是:
1后跟1到9 或 2跟0到6
就像波希米亞人所說的那樣 該^
和$
零個寬度斷言錨分別表示“字符串的開始”和“字符串的結束”。 它們的確切含義可能會根據正則表達式的味道而有所不同,但是在egrep
和其他基於行的正則表達式味道中,這就是它們的意思。 如果行中有其他字符的可能性,您將希望使用這些字符
a13b
&20-
如果您知道該數字將是該特定行上的全部數字,那么就不必嚴格要求它們了。
您需要將正則表達式括在雙引號(“”)中。 此外,考慮到更廣泛的搜索范圍,如果數字大於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}
表示2次出現0到9之間的數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.