Voice писал(а): ↑12.11.2007 17:53
Код: Выделить всё
[root@host116 PEAR] # ifconfig eth0 | grep 'inet addr' | grep -o ':[0-9\.]*'
[root@host116 PEAR] # ifconfig eth0 | grep 'inet addr' | grep -o '[0-9\.]*'
[root@host116 PEAR] #
Почему с двоеточием оно работает верно, а без него нет?
Вроди ж как все правильно.

Непраальна.

Потому что без двтчия это регулярное выражение совпадает с чем угодно на свете, вернее - с любой пустой строкой (наприм с позицией между двумя любыми символами), а потому бессмысленно для -о. Почему греп что-угодно-на-свете не копирует как-есть на выход - не знаю, но при включенной опции -о - не копирует ничего, это его тонкости, видимо. Без -о копирует все строки, как и ожидалось. Ну или надо как следует подумать логически.

$ ifconfig | grep 'inet addr' | egrep -o 'addr:[0-9\.]{0,15}' # работает
$ ifconfig | grep 'inet addr' | egrep -o '[0-9\.]{0,15}' # нифига
$ ifconfig | grep 'inet addr' | egrep -o '[0-9\.]{7,15}' # работает
И с плюсиком будет работать. Со звездочкой также как второй вариант где от нуля - не будет.