我想在特定文本出现在日志文件中时立即运行命令。我如何在Bash中做到这一点?如何在文件中出现文本行时使用Bash执行某些操作
4
A
回答
14
使用命令
tail -f file.log | grep --line-buffered "my pattern" | while read line
do
echo $line
done
的--line-buffered
是这里的关键,否则读会失败。
1
这应该工作,即使没有GNU的grep:
tail -f -n 0 logfile.out | nawk '/pattern/ {system("echo do something here")}'
编辑:增加了 “-n 0”,只有文本的新OCCURENCES将被匹配。
5
只有tail
使用:
tail -f file.log | while read line; do if [[ $line == *text* ]]; then
mycommand
fi; done
0
我喜欢matli的答案。 Bruno De Fraine的回答也很好,因为它只使用shell命令,而不是其他程序(如awk)。它受到整条线必须匹配魔术字符串的问题。这个问题并不清楚,这是需求的一部分。
我将修改它一点点应对“尽快”的条款在原来的问题
logfile_generator | tee logfile.out | nawk '/pattern/ {system("echo do something here")}'
其中logfile_generator是产生在首位的日志文件的程序。这个修改只要魔术字符串被找到就执行“东西”。
1
另外,您也可以查看inotail
,tail -f
的替代品,它仅在您感兴趣的文件发生更改时才使用inotify
框架来唤醒。通常的tail -f
只是在轮询之间短暂休息,这是一种有效但不是非常有效的解决方案。
相关问题
- 1. 如何在应用程序中执行某个文本时出现的操作
- 2. 如何仅在从命令行调用文件时执行某些操作
- 3. bash从文件中拉出某些行
- 4. 执行bash文件时出现问题
- 5. 如何在Unity3d中运行进程时执行某些操作
- 6. 如何查找文件中的某些单词然后执行某些操作?
- 7. 如何在执行某些操作后执行包含的文件
- 8. 如何在执行某些操作后向文本添加文本?
- 9. Eclipse插件:如何在打开或关闭文件时执行某些操作
- 10. 如何在iOS中旋转屏幕时执行某些操作?
- 11. 如何在GridLayout呈现后执行某些操作?
- 12. Bash脚本:对特定目录内某些扩展名的文件执行某些操作?
- 13. 如何在ASP会话超时时执行某些操作?
- 14. 在执行函数时执行某些操作jquery
- 15. 逐行读取文件并在bash中执行每个操作
- 16. 在irb中需要时如何执行某些文件?
- 17. 如何使用Java从文本文件中读取某些行?
- 18. (按文件循环文件并执行某些操作)并行程序
- 19. Android:使用线程在指定时间执行某些操作
- 20. JS - 如何在函数结束时执行某些操作
- 21. 如何让CheckBox在检查时执行某些操作?
- 22. 如何在Javafx关闭时执行某些操作?
- 23. Unity3d在将脚本附加到gameobject时执行某些操作
- 24. 在Django中创建用户时执行某些操作
- 25. 操纵txt文件中的某些行
- 26. 在bash脚本中执行jar文件
- 27. 只有在更新命令执行某些操作时才执行脚本
- 28. 如何使用任务队列稍后执行某些操作?
- 29. 如何使keyevent仅在出现文字时才执行点击操作
- 30. 如果PHP文本文件行等于,然后执行一些操作
我的解决方案匹配任何包含“文本”(这是模式*文本*所做的)的行,而不仅仅是等于“文本”的行。在Bash手册中查看[[]]化合物和==的描述。 – 2008-10-02 06:54:23