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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: РЕШЕНО: найти название главы, содержащей цитату, или как погрепать назад?  (Прочитано 1012 раз)

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

Оффлайн inkblack

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
А конкретно, вопрос в следующем. Есть вывод команды:

me@eee:~$ gconftool-2 -R /apps
 /apps/gnome-screensaver:
  theme = screensavers-ubuntu_theme
 /apps/indicator-session:
  suppress_logout_menuitem = false
...
< Очень много строк >
...
 /apps/panel3-applets/object_4:
  internet_time = false
  show_date = false
  expand_weather = false
  temperature_unit = C
  show_week_numbers = false
  show_weather = true
  show_tooltip = true
...
< Очень много строк >
...
me@eee:~$

Мне надо узнать, в каком каталоге лежит show_weather = true, т.е. найдя «show_weather = », просмотреть вывод назад и найти /apps/panel3-applets/object_4: (А именно: то, что находится между / и :) Как это сделать? Ведь заранее неизвестно, что эта panel именно 3, а object именно 4.

Понятно, что можно в несложном скрипте просматривать строки и запоминать то, что между / и :, а потом, найдя show_weather, получить желаемый результат. Но нет ли более простого способа — «погрепать назад»? Конечно, хочется что-нибудь легкое и изящное, sort, я думаю, здесь не подойдет:

me@eee:~$ gconftool-2 -R /apps |wc
   2422    6909   89211
me@eee:~$

« Последнее редактирование: 24 Июля 2012, 10:59:04 от Чистый »
Делюсь знаниями, но их у меня мало!

andrey_p

  • Гость
Стандартная задача для awk:

awk '         
/\/apps\// { header = $0 }
/show_weather/ { print header }'

Оффлайн inkblack

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Wow! Спасибо! То, что надо! Только задаю:

awk '         
/\/apps\// { header = $0 }
/show_weather =/ { print header }'


А то он находит все вхождения show_weather, что-то вроде
  /apps/panel3-applets/object_4:
recents = [/apps/panel3-applets/object_4/show_temperature, ... ,/apps/panel3-applets/object_4/show_weather, ...


Пойду читать man awk.
Делюсь знаниями, но их у меня мало!

 

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