簡體   English   中英

如何僅使用grep將特定數字范圍與正則表達式匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM