LinuxForum.Fans
Тема

Парсить вывод команды

Автор: fragment 10 сообщений 3599 просмотров
#387735

Возникла надобность чуть изменить поведение программы, самое простое что придумал - следить за выводом и запускать нужную задачу при появлении в выводе определённой подстроки. Какими средствами этого можно добиться?

#387749

в такой формулировке, чем хочешь: sed/awk/perl/bash+grep

если вывод не плейнтекстовый, а какой-нить ncurses'овский, то задача усложняется...

#387755

Fat-Zer, яч знаю чем именно можно парсить кучку текста. Хотелось бы понять, как именно парсить постоянно добавляющиеся строчки, одновременно с выводом этих строчек на экран в неизменном виде.

#387756

acpid умеет выполнять определённые действия при появлении определённых строчек в логе.

#387781
"fragment" написал:
Хотелось бы понять, как именно парсить постоянно добавляющиеся строчки

да то же самое... вот варианты на sed'е и bash'е:

text
echo -e '1\n2\n3' | sed -ne 'p;s/.*2,*/echo "&\" >>\/tmp\/log/e'
text
echo -e '1\n2\n3' | while read l; do echo "$l"; [[ "$l" = *2* ]] && echo "$l" >>/tmp/log; done
#387852

Fat-Zer, а с сохранением вывода?

#387881
"fragment" написал:
Fat-Zer, а с сохранением вывода?

сохраняет же...

#387920

Fat-Zer, сохраняет, но цвета теряются :(

#387925
"fragment" написал:
Fat-Zer, сохраняет, но цвета теряются ac

Попробуйте поменять >>/tmp/log на | tee -a /tmp/log.

#387933
fragment написал:
Fat-Zer, сохраняет, но цвета теряются :(

это уже трабла уровнем выше: большинство программ использующих цвета отключают их, если вывод идёт не на терминал... если они действительно нужны, то --color=y в помощь... или как-то так, но велика вероятность, что парсинг от этого сломется...

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