我从Server 2003运行tail和grep并且遇到了
的问题a:搜索范围(在我正在阅读的日志文件中分隔的那条管道,例如:
|100|2012/11/04 23:18:23|error string here|service name|host name|9|0|||0|824|3132|
b:将匹配的行实时输出到文本文件
这就是我正在使用的:
tail -f 20121106.log | grep -n "|8-9|" >> output.txt
我基本上希望输出一个文本文件,它在第6个管道之后找到的是8或9,这是根据我的应用程序的错误。
如果我没有输出到txt文件并查找“| 8 |”或“| 9 |” (我不能让范围工作,所以我必须做一个或另一个)然后它在cmd提示窗口中实时正确显示它们
任何人都可以帮我这个吗?不胜感激!
干杯
的NiGe
答案 0 :(得分:0)
您可以使用GNU awk
执行此操作:
tail -f 20121106.log | awk -F "|" '{ for(i=7; i<=NF; i++) if ($i=="8" || $i == "9") { print NR ":" $0; next } }' >> output.txt
快速解释:
在第6个管道后循环字段,如果字段是“8”或“9”,则打印行号(NR
),冒号(:
)和整行({ {1}})包含匹配字段。 $0
然后跳出循环以读取下一行输入。 HTH。
<强> 编辑: 强>
next