может кто подскажет как с помощью регулярных выражений найти данные которые лежат в интервале между двумя числами скажем 1000 и 1268?заранее спасибо
>может кто подскажет как с помощью регулярных выражений найти данные которые лежат
>в интервале между двумя числами скажем 1000 и 1268?
>
>заранее спасибоsas@tibook:tmp # cat >nums <<-EOF
> 12345
> 11111
> 3456
> 999
> 1000
> 1250
> 1268
> 1700
> 1800
> EOFsas@tibook:tmp # grep -E '1[0-2][0-6][0-8]' nums
12345
11111
1000
1250
1268:)
>>может кто подскажет как с помощью регулярных выражений найти данные которые лежат
>>в интервале между двумя числами скажем 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]$'
Again typo :(grep -E '^1[0-2][0-6][0-8]$'
>Again typo :(
>
>grep -E '^1[0-2][0-6][0-8]$'
1259 ;)
>>Again typo :(
>>
>>grep -E '^1[0-2][0-6][0-8]$'
>
>
>1259 ;):)) You are right :(
>может кто подскажет как с помощью регулярных выражений найти данные которые лежат
>в интервале между двумя числами скажем 1000 и 1268?
>
>заранее спасибо
проще отделить регулярным выражением все от 1000 до 1299
а потом сравнитьif($num =~ /^\s*(1[0-2]\d\d)\s*/ && $1 < 1269) {print "$1 in range\n"}
>>может кто подскажет как с помощью регулярных выражений найти данные которые лежат
>>в интервале между двумя числами скажем 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])
все эти варианты неплохие но и не применительные, так как задача следующая:написать шелл скрипт, которому в параметр передавать 2 даты (конечную и начальную) в unix-timestamp и который выдирает из файла строки входящие в данный интервал. А даты как вы понимаете довольно длинные например интервал 1057006801-1059685201.
жду с нетерпением советов.
>написать шелл скрипт, которому в параметр передавать 2 даты (конечную и начальную)
>в unix-timestamp и который выдирает из файла строки входящие в данный
>интервал. А даты как вы понимаете довольно длинные например интервал 1057006801-1059685201.что-то типа такого:
cat ... | perl -e 'while(<>) { /^(\d+)/; print if $1>=1057006801 and $1<1059685201; }' > ...
большое спасибо, тема закрыта, великий гуру wizard решил проблему, правда испольуя перл.
>большое спасибо, тема закрыта, великий гуру wizard решил проблему, правда испольуя перл.:))
ну можно и без аплодисментов было... :)))
>все эти варианты неплохие но и не применительные, так как задача следующая:
>
>
>написать шелл скрипт, которому в параметр передавать 2 даты (конечную и начальную)
>в unix-timestamp и который выдирает из файла строки входящие в данный
>интервал. А даты как вы понимаете довольно длинные например интервал 1057006801-1059685201.
>
>
>жду с нетерпением советов.надо задачу то поточнее было ставить...
сказал частный случай - получил решение для частного случая...