URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1993
[ Назад ]

Исходное сообщение
"интервал поиска в  регулярных выражениях"

Отправлено avdoshyn , 16-Авг-03 18:39 
может кто подскажет как с помощью регулярных выражений найти данные которые лежат в интервале между двумя числами скажем 1000 и 1268?

заранее спасибо


Содержание

Сообщения в этом обсуждении
"интервал поиска в  регулярных выражениях"
Отправлено sas , 16-Авг-03 21:02 
>может кто подскажет как с помощью регулярных выражений найти данные которые лежат
>в интервале между двумя числами скажем 1000 и 1268?
>
>заранее спасибо

sas@tibook:tmp # cat >nums <<-EOF
> 12345
> 11111
> 3456
> 999
> 1000
> 1250
> 1268
> 1700
> 1800
> EOF

sas@tibook:tmp # grep -E '1[0-2][0-6][0-8]' nums
12345
11111
1000
1250
1268

:)



"интервал поиска в  регулярных выражениях"
Отправлено sas , 16-Авг-03 21:04 
>>может кто подскажет как с помощью регулярных выражений найти данные которые лежат
>>в интервале между двумя числами скажем 1000 и 1268?
>>
>>заранее спасибо
>
>sas@tibook:tmp # cat >nums <<-EOF
>> 12345
>> 11111
>> 3456
>> 999
>> 1000
>> 1250
>> 1268
>> 1700
>> 1800
>> EOF
>
>sas@tibook:tmp # grep -E '1[0-2][0-6][0-8]' nums
>12345
>11111
>1000
>1250
>1268
>
>:)


Sorry pravil'no :

grep -E '^1[0-2][0-2][0-6][0-8]$'


"интервал поиска в  регулярных выражениях"
Отправлено sas , 16-Авг-03 21:07 
Again typo  :(

grep -E '^1[0-2][0-6][0-8]$'


"интервал поиска в  регулярных выражениях"
Отправлено qq , 16-Авг-03 21:36 
>Again typo  :(
>
>grep -E '^1[0-2][0-6][0-8]$'


1259 ;)


"интервал поиска в  регулярных выражениях"
Отправлено sas , 16-Авг-03 22:03 
>>Again typo  :(
>>
>>grep -E '^1[0-2][0-6][0-8]$'
>
>
>1259 ;)

:)) You are right   :(


"интервал поиска в  регулярных выражениях"
Отправлено qq , 17-Авг-03 00:08 
>может кто подскажет как с помощью регулярных выражений найти данные которые лежат
>в интервале между двумя числами скажем 1000 и 1268?
>
>заранее спасибо


проще отделить регулярным выражением все от 1000 до 1299
а потом сравнить

if($num =~ /^\s*(1[0-2]\d\d)\s*/ && $1 < 1269) {print "$1 in range\n"}


"интервал поиска в  регулярных выражениях"
Отправлено qq , 17-Авг-03 00:12 
>>может кто подскажет как с помощью регулярных выражений найти данные которые лежат
>>в интервале между двумя числами скажем 1000 и 1268?
>>
>>заранее спасибо
>
>
>проще отделить регулярным выражением все от 1000 до 1299
>а потом сравнить
>
>if($num =~ /^\s*(1[0-2]\d\d)\s*$/ && $1 < 1269) {print "$1 in range\n"}

ну а если сильно хочется все через RE (хотя по моему это будет тормознее)
то несколько выражений через |
(1[0-1]\d\d|12[0-5]\d|126[0-8])


"интервал поиска в  регулярных выражениях"
Отправлено avdoshyn , 18-Авг-03 12:30 
все эти варианты неплохие но и не применительные, так как задача следующая:

написать шелл скрипт, которому в параметр передавать 2 даты (конечную и начальную) в unix-timestamp и который выдирает из файла строки входящие в данный интервал. А даты как вы понимаете довольно длинные например интервал 1057006801-1059685201.

жду с нетерпением советов.


"интервал поиска в  регулярных выражениях"
Отправлено Wizard , 18-Авг-03 13:19 
>написать шелл скрипт, которому в параметр передавать 2 даты (конечную и начальную)
>в unix-timestamp и который выдирает из файла строки входящие в данный
>интервал. А даты как вы понимаете довольно длинные например интервал 1057006801-1059685201.

что-то типа такого:
cat ... | perl -e 'while(<>) { /^(\d+)/; print if $1>=1057006801 and $1<1059685201; }' > ...


"интервал поиска в  регулярных выражениях"
Отправлено avdoshyn , 18-Авг-03 13:29 
большое спасибо, тема закрыта, великий гуру wizard решил проблему, правда испольуя перл.


"интервал поиска в  регулярных выражениях"
Отправлено Wizard , 18-Авг-03 13:35 
>большое спасибо, тема закрыта, великий гуру wizard решил проблему, правда испольуя перл.

:))
ну можно и без аплодисментов было... :)))


"интервал поиска в  регулярных выражениях"
Отправлено qq , 18-Авг-03 20:23 
>все эти варианты неплохие но и не применительные, так как задача следующая:
>
>
>написать шелл скрипт, которому в параметр передавать 2 даты (конечную и начальную)
>в unix-timestamp и который выдирает из файла строки входящие в данный
>интервал. А даты как вы понимаете довольно длинные например интервал 1057006801-1059685201.
>
>
>жду с нетерпением советов.

надо задачу то поточнее было ставить...
сказал частный случай - получил решение для частного случая...