Страница 1 из 1

регулярное выражение

Добавлено: 2010-06-14 10:26:57
InventoR
Особо не сталкивался с регулярными выражениями, подскажите как записать в shell, posix
192.168.0-254.254
?

Re: регулярное выражение

Добавлено: 2010-06-14 16:24:39
Гость
в sh можно создать функцию range() и использовать как

Код: Выделить всё

$ range 192.168.0-254.254 | head -5
192.168.0.254
192.168.1.254
192.168.2.254
192.168.3.254
192.168.4.254
вот сама функция с примером использования на посл. строке

Код: Выделить всё

#! /bin/sh

range() {
    local IFS i prefix suffix from to
    IFS='.' set -- $1
    IFS=' ' set -- $1

    for p; do
        i=$((i + 1))
        case $p in
            *-*)
                prefix=$(while [ $((j+=1)) -lt $i ]; do
                    eval echo -n \$$j.
                done)

                suffix=$(while [ ${j=$((i+1))} -le $# ]; do
                    eval echo -n .\$$j
                    j=$((j + 1))
                done)

                from=${p%-*} to=${p#*-}
                while [ $from -le $to ]; do
                    echo $prefix$from$suffix
                    from=$((from + 1))
                done
                ;;
        esac
    done
}

range 192.168.0-254.254
А в bash и zsh еще проще

Код: Выделить всё

$ echo 192.168.{0..254}.254

Re: регулярное выражение

Добавлено: 2010-06-20 19:33:18
zg
InventoR писал(а):подскажите как записать в shell, posix
192.168.0-254.254
?
куда записать и с какой целью?

Re: регулярное выражение

Добавлено: 2010-06-20 23:28:15
InventoR
syslog-ng