On Thu, 26 Dec 2013 15:39:56 +0400 Vladimir Skubriev <[email protected]> wrote:
> Помогите с sed. Пожалуйста. > > #ip a | grep ppp50 > 6: ppp50: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc > pfifo_fast state UNKNOWN qlen 3 > inet 84.51.23.2 peer 80.68.8.17/32 scope global ppp50 Во-первых, ip a show dev ppp50, чтобы обойтись без грепа. > #ip a | grep ppp50 | sed -r 's/(.*inet )(.*)( peer.*)/\2/' > 6: ppp50: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc > pfifo_fast state UNKNOWN qlen 3 > 84.51.23.2 > > Нужно получить ip адрес по интерфейсу. Во-вторых, указать более точный regexp. Хватит условия "строка без пробелов и слешей": [^ /]*, т.е. в итоге получится: ip a show dev ppp50 | grep -E '\<inet\>' | sed -r 's/.*inet ([^ /]*).*/\1/' Грепается строка с "inet", чтобы отфильтровать всё постороннее, в т.ч. inet6. Но надо не забыть обработать случай, когда на интерфейсе несколько адресов. -- Alexander Galanin -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

