LINUX.ORG.RU

bash, вычленение записи из строки


0

0

Всем привет.

Подскажите такой момент - как имя домустим команду, а точнее её результат, "вычленить" оттуда значение регулярного выражения.

к примеру

$ ifconfig | <...>

должны вывестить IP адреса, не строчки содержащие IP, а только сами IP

★★
Ответ на: комментарий от f3ex

> ifconfig | egrep -o '[0-9]{1,3}(\.[0-9]{1,3}){3}'

во первых ты не уважаешь позикс. во вторых он так будет все выдавать -- и нетмаски и прочее.

dilmah ★★★★★
()
Ответ на: комментарий от f3ex

sudo ifconfig eth0 | grep -o -e 'inet addr:[^ ]*' | awk -F: '{print $2}'

Тоже вариант..

Laz ★★★★★
()
Ответ на: комментарий от dilmah

Это то что мне и недо было... Вообще надо было вычленить запись из строки, просто забыл опцию "-o" вот и все. Поставленная задача решена, а ifconfig это просто для примера использовалось

Все равно спасибо всем за помощь.

f3ex ★★
() автор топика
Ответ на: комментарий от f3ex

> просто забыл опцию "-o" вот и все. Поставленная задача решена, а ifconfig это просто для примера

опции -o нет в позиксе:)

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

забавно :) а тогда вопрос - что тогда есть? Как мне вычленить IP из какого-то текста ? т.е. мне надо получить запись, не строчку, номер "столбца" заранее не известен и т.д.

f3ex ★★
() автор топика
Ответ на: комментарий от dilmah

dilmah, не работает :)

AnDoR, покажи мне где в sed'e есть, то что мне требуется? пол дня сегодня курил его - не нашел... может я туплю, но не нашел.

f3ex ★★
() автор топика
Ответ на: комментарий от f3ex

> dilmah, не работает :)

да, точно -- с gawk работало, с nawk не работает

фишка в том что nawk не понимает если регексп задан переменной -- не знаю правильно это или нет..

dilmah ★★★★★
()
Ответ на: комментарий от f3ex

Приветствую.

Как минимум:

/sbin/ifconfig | sed -nre 's/^.*inet[^0-9]*(([0-9]+\.){3}([0-9]+)).*$/\1/; T happy_end; p; :happy_end'

Хотя, возможно, можно и красивее.

Lego_12239 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.