我在 AIX unix 中有这个 test.debug 文件,其中包含以下字段:
in[ 2: ]<0000********0000>
in[ 3: ]<0>
in[ 4: ]<000000020000>
in[ 7: ]<1113>
in[ 7: ]<80402>
in[ 11: ]<5530>
in[ 12: ]<181113>
in[ 12: ]<90254>
in[ 17: ]<1113>
in[ 19: ]<960>
in[ 22: ]<510101510000>
in[ 24: ]<400>
in[ 25: ]<4021>
in[ 26: ]<7011>
in[ 28: ]<181115>
in[ 30: ]<000000020000>
in[ 32: ]<000090>
in[ 33: ]<589638>
in[ 37: ]<000000000132>
in[ 41: ]<75000001>
in[ 42: ]<01111111111 >
in[ 49: ]<960>
in[ 56: ]<110000553018111309025406000004>
in[128: ]<98D6F81BFFFFFFFF>
out[000: ]<ISO9090-9999999902299>
in[129: ]<9420>
我想创建一个能够选择以下内容的脚本:in[ 32: ]<000090>
、in[ 49: ]<960>
和out[000: ]<ISO9090-9999999902299>
并in[129: ]<9420>
回显它们。
日志的目录是/var/debug/logs
.
答案1
您可以将要查找的所有模式放入一个文件中,并使用 -f 标志在命令行上指定该文件。
引用手册页:
-f file, --file=file
Read one or more newline separated patterns from file. Empty pattern lines match every input line.
Newlines are not considered part of a pattern. If file is empty, nothing is matched.
所以
grep -r -f <your file> /var/debug/logs
将为您提供与所有文件中的任何行匹配的所有行/var/debug/logs
答案2
您可以只grep
匹配您想要匹配的每个错误代码。无需使用,echo
因为grep
已经输出了匹配行。
grep -E '000090|960|9420|out\[ *002: *\]<ISO9090-9999999902299>' /var/debug/logs/filename
*
如果您想搜索文件夹中的所有文件而不是仅搜索一个文件,则可以使用as 文件名。