Форум русскоязычного сообщества Ubuntu


Автор Тема: AWK. Выбор значения из строки  (Прочитано 687 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Greenhed

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
  • Йож
    • Просмотр профиля
AWK. Выбор значения из строки
« : 11 Декабря 2012, 15:28:09 »
Простите новичка, совершенно несведущего в программировании за тупой вопрос.


Есть строка:



<yweather:condition  text="Cloudy"  code="26"  temp="-2"  date="Tue, 11 Dec 2012 2:01 pm MSK" />


есть-ли у awk возможность выдать мне числовое значение элемента? Ну т.е. не (temp="-2") а (-2) без замены символов посредством gsub?

З.ы. прошу сильно не пинать, мои знания в программировании ограничиваются школьным курсом паскаля =)

Оффлайн vselax

  • Активист
  • *
  • Сообщений: 309
    • Просмотр профиля
Re: AWK. Выбор значения из строки
« Ответ #1 : 11 Декабря 2012, 16:26:15 »
Можно пропустить через второй awk.
echo '<yweather:condition  text="Cloudy"  code="26"  temp="-2"  date="Tue, 11 Dec 2012 2:01 pm MSK" />' | awk '{print $3}' | awk -F\" '{print $2}'
Пользователь решил продолжить мысль 11 Декабря 2012, 16:27:37:
Правда производительность в цикле будет низкой (awk будет перезагружаться).
Можно и в один второй все утолкать.
« Последнее редактирование: 11 Декабря 2012, 16:32:02 от vselax »

Оффлайн Greenhed

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
  • Йож
    • Просмотр профиля
Re: AWK. Выбор значения из строки
« Ответ #2 : 11 Декабря 2012, 16:46:05 »
тогда проще заменой =) Я думал может оператор какой есть под это дело =)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: AWK. Выбор значения из строки
« Ответ #3 : 12 Декабря 2012, 10:04:52 »
Заменой проще
echo '<yweather:condition  text="Cloudy"  code="26"  temp="-2"  date="Tue, 11 Dec 2012 2:01 pm MSK" />' | sed 's/^<.*temp="\([^"]*\)".*/\1/'
-2

Оффлайн Greenhed

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
  • Йож
    • Просмотр профиля
Re: AWK. Выбор значения из строки
« Ответ #4 : 12 Декабря 2012, 13:42:03 »
Я сделал чуть более удобочитаемо =)


| awk '{ gsub(/temp="/, ""); gsub (/"/, ""); print $4}'

 

Страница сгенерирована за 0.046 секунд. Запросов: 25.