Re: Почему sed выдает не только группу но и другой текст ?
On Thu, 26 Dec 2013 15:39:56 +0400
Vladimir Skubriev <skubriev@cvisionlab.com> 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
Reply to: