Разделяем строку на несколько составляющих

Разделяем строку на составляющие по определенным признакам. Как пример, пускай на надо получить чистый ip адрес интерфейсы из вывода команды ifconfig. Это можно сделать несколькими способами. Первый, при помощи awk:

ifconfig eth0|grep «inet addr:»| awk ‘{split($0,a,»:»); print a[2]}’

Второй, используя cut:

ifconfig eth0|grep «inet addr:» | cut -f 2 -d ‘:’

Третий, обработав строку командой tr:

ifconfig eth0|grep «inet addr:» | tr ‘:’ ‘\n’

И последний это sed:

ifconfig eth0|grep "inet addr:"|sed -e ‘s_:_\n_g’

Вывод у этих команд немного разный, первые две  выводят все что находиться между символaми «:» . Если оригинал выглядит вот так :

inet addr:80.91.175.94 Bcast:80.91.175.95 Mask:255.255.255.240

то вывод будет(выбор сегмента производиться в print a[] для awk и для cut в параметре -f)

80.91.175.94 Bcast

В случаи же третей и четвертой команды, они считывают все строку, и каждый раз, когда находят символ «:» переходят на новую строку, удаляя при этом «:»

inet addr
80.91.175.94 Bcast
80.91.175.95 Mask
255.255.255.240

 

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>