[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: