Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 10 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Привет всем!
Столкнулся с такой проблемой...
Дано: имеется простой текстовый файл(для определенности z.txt) на диске Linux,который со случайной периодичностью пополняется строчками заранее известной структуры,которые дописываются,естественно,в конец файла.
Надо: вылывливать моменты, когда каждая новая строчка содержит определенные символы(для определенности: 2006) и реагировать на этот факт.
Мое решение: Ничего лучше,чем tail -f я не выдумал,но пришла засада:скрипт, часть крторого я привожу ниже, не работает корректно:

[ tail -f z.txt|grep 2006 ] && нужное_мне_действие

Дело в том,что при запуске его shell ругается на синтаксическую ошибку(отсутствие) оператора сравнения,т.е. [. Стал разбираться,оказывается,что команда tail -f z.txt|grep 2006 вообще не возвращает свой код по echo $?
Пытался воспользоваться stdout , т.к. на экран-то результат grep выводится :
tail -f z.txt|grep 2006 1>y.txt
Так опять засада - файл y.txt создается,но пустой(без строки,содержащей вхождение 2006). Что делать и как дальше жить? Может, есть что-то лучше tail ?
Заранее спасибо всем!



Партнер
 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
tail -f z.txt | nawk ' { if (/2006/) system("Твоя команда") }'
Работает без вопросов. Но именно nawk, остальные не тянут system


 

Member
Статус: Не в сети
Регистрация: 22.12.2003
Цитата:
Так опять засада - файл y.txt создается,но пустой(без строки,содержащей вхождение 2006)


А естли файл создать заранее?

_________________
Да, я гуру, очень приятно!


 

Avaddon писал(а):
tail -f z.txt | nawk ' { if (/2006/) system("Твоя команда") }'
Работает без вопросов. Но именно nawk, остальные не тянут system

Спасибо ,обязательно попробую. А раз пошла такая пьянка,как в этом случае разветвить условие невыполнения? в сиснтаксисе nawk я не силен:oops:


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
Dr.Fuzzy
if(/2006/) {
} else {
Тут невыпролнение
}

_________________
Цель жизни - d20 по жизни...


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
А можно поконкретней, что выводиться на экран?

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

nickyoz
Цитата:
можно поконкретней, что выводиться на экран?

Ну вот такое,например,по памяти воспроизвожу:
10/03/04 12:43 ...... 2006 UPS on battery
Вообще-то z.txt это фрагмент pwrchute.log и 2006-это на самом деле ID события с более длинным кодом,я для краткости привел другое число.Это непринципиально


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
а так?
cat z.text | grep 2006 | твои действия

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

nickyoz писал(а):
а так?
cat z.text | grep 2006 | твои действия

Во-первых,выдадутся ВСЕ строки с таким вхождением за всю историю существования файла(мне это не нужно,нужно только свежее событие,т.е. слежение за изменением файла),во-вторых не понял смысла 2-го конвеера?


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
ничего не понял. В каком смысле свежее событие? Как ты его отследить попытаешься?
второй варинт, используй for

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 10 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan