Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность alexander barakin (aka sash-kan)
26.12.2013, 17:35, "Alexander Galanin" :
> On Thu, 26 Dec 2013 16:42:16 +0400
> Vladimir Skubriev  wrote:
>
>>  1. Зачем \< и \> в grep'е почему не просто 'inet' ? или Вы просто только
>>  --extended-regexp пользуетесь ?
>
> Потому что «просто inet» пропустит inet6, что нас мало интересует.
> Можно и пробел после слова поставить.

элегантнее сразу запросить у /bin/ip только inet4-адерса.
и вместо "ip a ..." написать "ip -4 a ..."


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/135541388069...@web14h.yandex.ru



Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Vladimir Skubriev

26.12.2013 17:26, Alexander Galanin пишет:

On Thu, 26 Dec 2013 16:42:16 +0400
Vladimir Skubriev  wrote:


1. Зачем \< и \> в grep'е почему не просто 'inet' ? или Вы просто только
--extended-regexp пользуетесь ?

Потому что «просто inet» пропустит inet6, что нас мало интересует.
Можно и пробел после слова поставить.


2. Я не знал, что можно .*inet без группы написать, точнее что не
обязательно все в группы объединять.

В группу объединяют, если хотят что-то с ней потом делать.


3. ( - группа начинается, [^ /]* - любое количество чего ?

Любых символов, кроме пробела и слеша. Это на случай адресов вида
192.168.1.22/24, которые будут в ethernet-сети.


Чем плох мой вариант (после вашего примера)

ip a show dev ppp50 | grep 'inet' | sed -r 's/.*inet (.*) peer.*/\1/'

Сломается на «inet 192.168.1.22/24 brd 192.168.1.255 scope global eth1».
Но это уже немного другой случай, так что если интересует только ppp, то
всё нормально.

Но как сказали выше, красивее будет sed с ключом -n.

Спасибо. Добавлю без слэша и пробела! А то вдруг завтра пров решит 
перейти на ethernet.


--
--
Faithfully yours,

Vladimir Skubriev


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52bc316d.2090...@skubriev.ru



Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Alexander Galanin
On Thu, 26 Dec 2013 16:42:16 +0400
Vladimir Skubriev  wrote:

> 1. Зачем \< и \> в grep'е почему не просто 'inet' ? или Вы просто только 
> --extended-regexp пользуетесь ?

Потому что «просто inet» пропустит inet6, что нас мало интересует.
Можно и пробел после слова поставить.

> 2. Я не знал, что можно .*inet без группы написать, точнее что не 
> обязательно все в группы объединять.

В группу объединяют, если хотят что-то с ней потом делать.

> 3. ( - группа начинается, [^ /]* - любое количество чего ?

Любых символов, кроме пробела и слеша. Это на случай адресов вида
192.168.1.22/24, которые будут в ethernet-сети.

> Чем плох мой вариант (после вашего примера)
> 
> ip a show dev ppp50 | grep 'inet' | sed -r 's/.*inet (.*) peer.*/\1/'

Сломается на «inet 192.168.1.22/24 brd 192.168.1.255 scope global eth1».
Но это уже немного другой случай, так что если интересует только ppp, то
всё нормально.

Но как сказали выше, красивее будет sed с ключом -n.

-- 
Alexander Galanin


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/20131226172606.d19a081716a87d0ad646e...@galanin.nnov.ru



Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Eugene Berdnikov
On Thu, Dec 26, 2013 at 04:43:27PM +0400, Vladimir Skubriev wrote:
> 26.12.2013 16:38, yuri.nefe...@gmail.com пишет:
> >  В первой строке искомый образец не находится и sed пропускает
> >  ее целиком. Во второй строке срабатывает замена.
> >Ю.
> Ух ты её маё. А слона то я и не заметил.
> А все потому, что deadline приближается (

 К хорошим программистам на Новый Год приходит Дед Мороз,
 а к плохим -- Дедлайн... (c)
-- 
 Eugene Berdnikov


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20131226125755.ge3...@sie.protva.ru



Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Vladimir Skubriev

26.12.2013 16:38, yuri.nefe...@gmail.com пишет:

On Thu, 26 Dec 2013, Vladimir Skubriev wrote:


Помогите с sed. Пожалуйста.

#ip a | grep ppp50
6: ppp50:  mtu 1492 qdisc 
pfifo_fast state UNKNOWN qlen 3

   inet 84.51.23.2 peer 80.68.8.17/32 scope global ppp50


  Здесь у вас _две_ строки в каждой ppp50


#ip a | grep ppp50 | sed -r 's/(.*inet )(.*)( peer.*)/\2/'
6: ppp50:  mtu 1492 qdisc 
pfifo_fast state UNKNOWN qlen 3

84.51.23.2


  В первой строке искомый образец не находится и sed пропускает
  ее целиком. Во второй строке срабатывает замена.
Ю.

Ух ты её маё. А слона то я и не заметил.
А все потому, что deadline приближается (

--
--
Faithfully yours,

Vladimir Skubriev


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52bc246f.9070...@skubriev.ru



Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Vladimir Skubriev

26.12.2013 16:10, Alexander Galanin пишет:

On Thu, 26 Dec 2013 15:39:56 +0400
Vladimir Skubriev  wrote:


Помогите с sed. Пожалуйста.

#ip a | grep ppp50
6: ppp50:  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:  mtu 1492 qdisc
pfifo_fast state UNKNOWN qlen 3
84.51.23.2

Нужно получить ip адрес по интерфейсу.

Во-вторых, указать более точный regexp. Хватит условия "строка без
пробелов и слешей": [^ /]*, т.е. в итоге получится:

ip a show dev ppp50 | grep -E '\' | sed -r 's/.*inet ([^ /]*).*/\1/'

Во вторых вопросы :-) :

1. Зачем \< и \> в grep'е почему не просто 'inet' ? или Вы просто только 
--extended-regexp пользуетесь ?
2. Я не знал, что можно .*inet без группы написать, точнее что не 
обязательно все в группы объединять.

3. ( - группа начинается, [^ /]* - любое количество чего ?

Чем плох мой вариант (после вашего примера)

ip a show dev ppp50 | grep 'inet' | sed -r 's/.*inet (.*) peer.*/\1/'

?

Грепается строка с "inet", чтобы отфильтровать всё постороннее, в т.ч. inet6.

Но надо не забыть обработать случай, когда на интерфейсе несколько адресов.


Меня вполне устарвивает вариант с одним )


--
--
Faithfully yours,

Vladimir Skubriev


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52bc2428.7050...@skubriev.ru



Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Alexander Galanin
On Thu, 26 Dec 2013 15:16:47 +0300
Alexandr Terekhov  wrote:

> Тогда уж
> ip a show dev br0 |  sed -rn 's/.*inet ([^ /]*).*/\1/p'

Да, так лучше. Только без копии в «личку», пожалуйста.

-- 
Alexander Galanin


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/20131226163945.ca6e83ac0ceeea6dea079...@galanin.nnov.ru



Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность yuri . nefedov

On Thu, 26 Dec 2013, Vladimir Skubriev wrote:


Помогите с sed. Пожалуйста.

#ip a | grep ppp50
6: ppp50:  mtu 1492 qdisc pfifo_fast 
state UNKNOWN qlen 3

   inet 84.51.23.2 peer 80.68.8.17/32 scope global ppp50


  Здесь у вас _две_ строки в каждой ppp50


#ip a | grep ppp50 | sed -r 's/(.*inet )(.*)( peer.*)/\2/'
6: ppp50:  mtu 1492 qdisc pfifo_fast 
state UNKNOWN qlen 3

84.51.23.2


  В первой строке искомый образец не находится и sed пропускает
  ее целиком. Во второй строке срабатывает замена.
Ю.


Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Hleb Valoshka
On 12/26/13, Vladimir Skubriev  wrote:
> Помогите с sed. Пожалуйста.

Всё он делает правильно. Вставьте grep перед sed, либо пользуйтесь awk/perl/etc


Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Alexandr Terekhov
Тогда уж
ip a show dev br0 |  sed -rn 's/.*inet ([^ /]*).*/\1/p'


2013/12/26 Alexander Galanin 

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


Re: Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Alexander Galanin
On Thu, 26 Dec 2013 15:39:56 +0400
Vladimir Skubriev  wrote:

> Помогите с sed. Пожалуйста.
> 
> #ip a | grep ppp50
> 6: ppp50:  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:  mtu 1492 qdisc 
> pfifo_fast state UNKNOWN qlen 3
> 84.51.23.2
> 
> Нужно получить ip адрес по интерфейсу.

Во-вторых, указать более точный regexp. Хватит условия "строка без
пробелов и слешей": [^ /]*, т.е. в итоге получится:

ip a show dev ppp50 | grep -E '\' | sed -r 's/.*inet ([^ /]*).*/\1/'

Грепается строка с "inet", чтобы отфильтровать всё постороннее, в т.ч. inet6.

Но надо не забыть обработать случай, когда на интерфейсе несколько адресов.

-- 
Alexander Galanin


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/20131226161044.9256aa493ce92a75bd741...@galanin.nnov.ru



Почему sed выдает не только группу но и другой текст ?

2013-12-26 Пенетрантность Vladimir Skubriev

Помогите с sed. Пожалуйста.

#ip a | grep ppp50
6: ppp50:  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 | grep ppp50 | sed -r 's/(.*inet )(.*)( peer.*)/\2/'
6: ppp50:  mtu 1492 qdisc 
pfifo_fast state UNKNOWN qlen 3

84.51.23.2

Нужно получить ip адрес по интерфейсу.

--
Faithfully yours,

CVision Lab System Administrator
Vladmir Skubriev


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52bc158c.4050...@cvisionlab.com