2015-04-06 4 views
0

Я пытаюсь сопоставить определенный числовой шаблон из приведенного ниже списка. Мое требование должно соответствовать только report.20150325 - report.20150331. Пожалуйста помоги.Regex для сопоставления числового шаблона

report.20150319 
report.20150320 
report.20150321 
report.20150322 
report.20150323 
report.20150324 
report.20150325 
report.20150326 
report.20150327 
report.20150328 
report.20150329 
report.20150330 
report.20150331 

ответ

1

Это очень просто, чтобы соответствовать 25 к 31 Использование регулярных выражений 2[5-9]|3[01]

Вот полную REGEX

(report\.201503(2[5-9]|3[01])) 

DEMO

Пояснения к 2[5-9]|3[01]

2 followed by a single character in the range between 5 and 9 
OR 
3 followed by 0 or 1 
0

Вы можете использовать что-то вроде этого: ^report\.201503(2[5-9]|3[01])$/gm (с использованием this инструмент).

Он должен соответствовать отчетам, которые вы после, как показано на рисунке here.

0

Похоже, вы хотите напечатать линии, которые попадают между линиями, которые соответствуют двум отдельным узорам (, включая линии, которые соответствуют узорам).

$ sed -n '/^report\.20150325$/,/^report\.20150331$/p' file 
report.20150325 
report.20150326 
report.20150327 
report.20150328 
report.20150329 
report.20150330 
report.20150331 
+0

'AWK«/report.20150325/{f=1}/report.20150331/{print;f=0 } f 'file' –

+0

не забудьте привязать свои RE и избежать метахаров, которые вы хотите взять буквально. –

0

Соответствие регулярному выражению не всегда правильно. Здесь вы просите, чтобы соответствовать строке, за которым следует номер, чтобы использовать строку и численные сравнения:

$ awk -F'.' '$1=="report" && ($2>=20150325) && ($2<=20150331)' file 
report.20150325 
report.20150326 
report.20150327 
report.20150328 
report.20150329 
report.20150330 
report.20150331 
Смежные вопросы