【发布时间】:2010-11-08 23:34:26
【问题描述】:
我正在编写一个 shell 脚本来对不断增长的日志文件进行“跟踪”。此脚本接受要搜索的参数,并在其上逐步 greps 输出。
例如,如果脚本调用如下:
logs.sh string1 string2
应该翻译成:
tail -f logs.txt | grep string1 | grep string2
我正在构建这样的 grep 字符串列表:
full_grep_string=""
for grep_string in $*
do
full_grep_string="$full_grep_string | grep $grep_string"
done
字符串是正确构建的,但是当我尝试最终将它标记到tail命令时,就像这样......
tail -f $LOG_FILE_PATH $full_grep_string
...grep 不适用,我得到未过滤的日志。
我在这里遗漏了什么吗?或者有更简单的方法吗?
【问题讨论】:
-
只是一个小小的说明:您的脚本应该输出包含 string1 和 string2 的日志文件行的想法,还是您打算查找包含任何字符串的行?
-
另外,您使用的是什么外壳?重击?
-
对于 debian lenny 的我来说,我必须面对两个 grep 组合不能与 tail -f 一起使用但仅与 tail 一起使用的问题
-
@Andreas:我建议他想同时找到这两个,否则组合的 grep 没有用,他可以使用 egrep "string1|string2"