Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > вытащить данные из строки


Автор: uwannadie 7.2.2012, 16:19
есть строка, полученная grep-ом:
Link Quality=0/94  Signal level=-96 dBm  Noise level=-96 dBm
надо как-то получить данные, выделенные жирным шрифтом

маны по грепу и кату курил, но не особенно удачно :(

если кто-нибудь поможет вытащить инфу, буду премного благодарен.

Автор: mihanik 7.2.2012, 21:17
uwannadie, тут нужно регулярные выражения курить.
smile

Автор: uwannadie 7.2.2012, 22:04
Цитата(mihanik @ 7.2.2012,  21:17)
uwannadie, тут нужно регулярные выражения курить.
smile

ок, ща замучу косячок smile

Автор: uwannadie 8.2.2012, 00:07
в общем получилось без регулярок, но в немного извращенной форме:
Код

somecommand | grep "Signal level"| awk '{ print $4 }  { print $7 }' | cut -d "=" -f2

на выходе получаю 2 цифры с новой строки каждая smile

Автор: 1000000dollars 8.2.2012, 09:59
Код

grep ... | tr -d [[:alpha:]]= | awk {'print $2" "$3'}

на выходе получаю два числа записанные через пробел.

Автор: uwannadie 8.2.2012, 11:11
Цитата(1000000dollars @ 8.2.2012,  09:59)
Код

grep ... | tr -d [[:alpha:]]= | awk {'print $2" "$3'}

на выходе получаю два числа записанные через пробел.

не совсем то, что надо, потому что в начале строки есть 2 ненужных цирфы.

окончательный вариант выглядит так:
начальная строка:
Link Quality=0/94  Signal level=-96 dBm  Noise level=-96 dBm
Код
iwconfig ath0 | grep "Signal level"| awk '{ a=$4 "%" $7; print a }' | sed -e "s/level=//g"

Выход -96%-96 (% для удобства разделения чисел)

Автор: spin2 8.2.2012, 13:20
А если как-то так:
Цитата

iwconfig ath0 | grep "Signal level"|tr "=" " " |cut -f 6,10 -d " "


Получится -96 -96


Автор: 1000000dollars 8.2.2012, 13:44
Цитата(uwannadie @  8.2.2012,  11:11 Найти цитируемый пост)
в начале строки есть 2 ненужных цирфы.

8-[ ]
Вот что получается у меня:
Код

[vadim@xen ~]$ echo "Link Quality=0/94  Signal level=-96 dBm  Noise level=-96 dBm" | tr -d [[:alpha:]]= | awk {'print $2" "$3'}
-96 -96
[vadim@xen ~]$

Автор: uwannadie 9.2.2012, 16:41
Цитата(1000000dollars @ 8.2.2012,  13:44)
Цитата(uwannadie @  8.2.2012,  11:11 Найти цитируемый пост)
в начале строки есть 2 ненужных цирфы.

8-[ ]
Вот что получается у меня:
Код

[vadim@xen ~]$ echo "Link Quality=0/94  Signal level=-96 dBm  Noise level=-96 dBm" | tr -d [[:alpha:]]= | awk {'print $2" "$3'}
-96 -96
[vadim@xen ~]$

разница скорее всего ввиду того, что все вышеописанное выполняется на точке доступа NanoStation M5, а там я уже заметил кучку глюков с обыными командами smile

Автор: spin2 9.2.2012, 16:42
uwannadie, а мой вариант чем не нравится?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)