查看日志:
cat 日志文件 | grep -A/B/C 行数 ‘搜索的内容/关键字’
cat jetty_stdout.log | grep -A 1000 '15017472573983'
cat jetty_stdout.log | grep -C 1000 '15017472573983'
grep命令的格式:
grep [options] PATTERN [FILE]
其中:
1,pattern是用正则表达式书写的模式。2,FILE是要查找的文件,可以是用空格间隔的多个文件,省略FILE时表示在标准输入中查找常用参数:
-E :采用规则表示式去解释样式。
-c:只显示匹配行的次数。-i:搜索时不区分大小写。
-n:输出匹配行的行号。-v:输出不匹配的行(反向选择)。-?:同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。
-c,--count:只打印匹配的行数,不显示匹配的内容。
-f File,--file=File:从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。-i,--ignore-case:忽略大小写差别。-q,--quiet:取消显示,只返回退出状态。0则表示找到了匹配的行。-l,--files-with-matches:打印匹配模板的文件清单。-L,--files-without-match:打印不匹配模板的文件清单。-n,--line-number:在匹配的行前面打印行号。-s,--silent:不显示关于不存在或者无法读取文件的错误信息。-v,--revert-match:反检索,只显示不匹配的行。-w,--word-regexp:如果被\<和\>引用,就把表达式做为一个单词搜索。-V,--version:显示软件版本信息。-b,--byte-offset:打印匹配行前面打印该行所在的块号码。
-h,--no-filename:当搜索多个文件时,不显示匹配文件名前缀。
-A NUM:同时输出匹配行的后NUM行。-B NUM:同时输出匹配行的前NUM行。-C NUM:同时输出匹配行的前,后各NUM行。说明:
A:FILE可是使用shell的通配符的多个文件中查找PATTERN。B:通常必须用单引号将整个模式PATTERN括起来。C:grep命令不会对输入文件进行任何修改或影响,可以使用输出重定向将结果存文文件。grep使用举例:
#在文件myfile中查找包含指定的字符串的行#如果使用grep命令查找指定的字符串(不使用正则表达式),PATTERN可以不用单引号括起来# grep osmond myfile#在文件myfile1,myfile2,myfile3中查找指定的字符串的行
# grep 'osmond' myfile1 myfile2 myfile3#在当前目录的所有文件中查找包含指定的字符串的行
# grep 'osmond' *#在当前的目录的所有文件中查找包含字符*的行
# grep '*' *#在文件myfile中查找包含字符$的行
#为了强制shell将\$(单反斜杠和美元符号)传递给grep命令,必须要使用\\(双反斜杠)#\(单反斜杠)字符课通知grep命令将其后的(本例中的$)视最为原义字符而不是#元字符。#如果使用fgrep命令,则可以不必使用反斜杠之类的转义符# grep \\$ myfile# grep '\$' myfile# fgrep '$' myfile# fgrep $ myfile#匹配myfile中所有的空行
# grep '^$' myfile#显示myfile中第一个字符为字母的所有行
# grep '^[a-zA-Z]' myfile#在文件myfile中查找首字母不是#的行(即过滤掉注释行)
# grep -v '^#' myfile#显示在myfile中至少有5个连续的小写字符的字符串的行
# grep '[a-z]\{5\}' myfile#在文件myfile中查找包含日期格式(yyyy-mm-dd)的行
# grep '[12][0-9]\{3\}-[01][0-9]-[0-3][0-9]' myfile#在文件myfile中查找与abc或xyz字符串匹配的所有行
# egrep 'abc|xyz' myfile#如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*)
#这些字符后面紧跟着另外一个es(\1),找到就显示该行# grep 'w\(es)t.*\1' myfile# egrep 'w(es)t.*\1' myfile#通过管道过滤ls输出的内容,值显示以1开头的行
# ls -l | grep '^1'#通过管道过滤ls输出的行,只显示可写的文件或目录的行
# ls -l | grep '[-d].w..w..w.'#通过管道过滤ls输出的结果,只显示以~或-或.bak结尾的行
# ls | egrep '(~|-|.bak)$'#显示awk目录下面所有.txt文件中的总字符字节
# grep '^.' *.txt | wc -c //不包括空行#显示awk目录下面所有.txt文件中的总字符字节
# grep '^' *.txt | wc -c //包括空行
#显示awk目录下面所有.txt文件中的奇数行的总字符字节
#grep '^' *.txt | awk 'NR % 2 == 1'|wc -c
#显示awk目录下面所有.txt文件中的偶数行的总字符字节
#grep '^' *.txt | awk 'NR % 2 == 0'|wc -c
#把a.txt b.txt中的奇数行写到文件c.txt文件中
#grep '^' a.txt b.txt |awk 'NR % 2 == 1' > c.txt
#把目录下面.txt中的奇数行写到文件tt.txt文件中
#grep '^' *.txt |awk 'NR % 2 == 1'>tt.txt
下面的例子中我们假定在文件phone.txt中包含以下的文本,——其格式是姓加一个逗号,然后是名,然后是一个制表符,然后是电话号码:
Francis, John 5-3871
Wong, Fred 4-4123 Jones, Thomas 1-4122 Salazar, Richard 5-2522