linux通过grep根据关键字查找日志文件上下文
1、在标准unix/linux下的grep命令中,通过以下参数控制上下文的显示:
?? grep -C 10 keyword catalina.out 显示file文件中匹配keyword字串那行以及上下10行
?? grep -B 10 keyword catalina.out 显示keyword及前10行
?? grep -A 10 keyword catalina.out 显示keyword及后10行
2、查找的结果比较大时,为了方便定位问题,也可以重定向到文件中,比如:
?? grep -C?10 keyword catalina.out? > aaa.txt
3、统计包含某个关键字的个数
?? grep?-o?keyword catalina.out |?wc?-l
4、如果一行最多一个关键字,可以简写为:
?? grep?-c?keyword catalina.out
5、查看grep版本的方法是
?? grep -V
Grep命令详细说明:
Usage: grep [OPTION]... PATTERN [FILE]...
Search for PATTERN in each FILE or standard input.
PATTERN is,by default,a basic regular expression (BRE).
Example: grep -i ‘hello world‘ menu.h main.c
Regexp selection and interpretation:
? -E,--extended-regexp???? PATTERN is an extended regular expression (ERE)
? -F,--fixed-strings?????? PATTERN is a set of newline-separated fixed strings
? -G,--basic-regexp??????? PATTERN is a basic regular expression (BRE)
? -P,--perl-regexp???????? PATTERN is a Perl regular expression
? -e,--regexp=PATTERN????? use PATTERN for matching
? -f,--file=FILE?????????? obtain PATTERN from FILE
? -i,--ignore-case???????? ignore case distinctions
? -w,--word-regexp???????? force PATTERN to match only whole words
? -x,--line-regexp???????? force PATTERN to match only whole lines
? -z,--null-data?????????? a data line ends in 0 byte,not newline
Miscellaneous:
? -s,--no-messages???????? suppress error messages
? -v,--invert-match??????? select non-matching lines
? -V,--version???????????? display version information and exit
????? --help??????????????? display this help text and exit
Output control:
? -m,--max-count=NUM?????? stop after NUM matches
? -b,--byte-offset???????? print the byte offset with output lines
? -n,--line-number???????? print line number with output lines
????? --line-buffered?????? flush output on every line
? -H,--with-filename?????? print the file name for each match
? -h,--no-filename???????? suppress the file name prefix on output
????? --label=LABEL???????? use LABEL as the standard input file name prefix
? -o,--only-matching?????? show only the part of a line matching PATTERN
? -q,--quiet,--silent???? suppress all normal output
????? --binary-files=TYPE?? assume that binary files are TYPE;
??????????????????????????? TYPE is ‘binary‘,‘text‘,or ‘without-match‘
? -a,--text??????????????? equivalent to --binary-files=text
? -I??????????????????????? equivalent to --binary-files=without-match
? -d,--directories=ACTION? how to handle directories;
??????????????????????????? ACTION is ‘read‘,‘recurse‘,or ‘skip‘
? -D,--devices=ACTION????? how to handle devices,FIFOs and sockets;
??????????????????????????? ACTION is ‘read‘ or ‘skip‘
? -r,--recursive?????????? like --directories=recurse
? -R,--dereference-recursive
??????????????????????????? likewise,but follow all symlinks
????? --include=FILE_PATTERN
??????????????????????????? search only files that match FILE_PATTERN
????? --exclude=FILE_PATTERN
??????????????????????????? skip files and directories matching FILE_PATTERN
????? --exclude-from=FILE?? skip files matching any file pattern from FILE
????? --exclude-dir=PATTERN directories that match PATTERN will be skipped.
? -L,--files-without-match print only names of FILEs containing no match
? -l,--files-with-matches? print only names of FILEs containing matches
? -c,--count?????????????? print only a count of matching lines per FILE
? -T,--initial-tab???????? make tabs line up (if needed)
? -Z,--null??????????????? print 0 byte after FILE name
Context control:
? -B,--before-context=NUM? print NUM lines of leading context
? -A,--after-context=NUM?? print NUM lines of trailing context
? -C,--context=NUM???????? print NUM lines of output context
? -NUM????????????????????? same as --context=NUM
????? --group-separator=SEP use SEP as a group separator
????? --no-group-separator? use empty string as a group separator
????? --color[=WHEN],
????? --colour[=WHEN]?????? use markers to highlight the matching strings;
??????????????????????????? WHEN is ‘always‘,‘never‘,or ‘auto‘
? -U,--binary????????????? do not strip CR characters at EOL (MSDOS/Windows)
? -u,--unix-byte-offsets?? report offsets as if CRs were not there
??????????????????????????? (MSDOS/Windows)
‘egrep‘ means ‘grep -E‘.? ‘fgrep‘ means ‘grep -F‘.
Direct invocation as either ‘egrep‘ or ‘fgrep‘ is deprecated.
When FILE is -,read standard input.? With no FILE,read . if a command-line
-r is given,- otherwise.? If fewer than two FILEs are given,assume -h.
Exit status is 0 if any line is selected,1 otherwise;
if any error occurs and -q is not given,the exit status is 2.
Report bugs to: [email?protected]GNU Grep home page: <http://www.gnu.org/software/grep/>General help using GNU software: <http://www.gnu.org/gethelp/>