在平时的工作中,经常需要查看日志文件,要在几万行的日志文件中迅速找到特定的数据行,可以使用grep命令。
一、基本用法
命令格式如下:
grep [option] pattern [file]
grep将在输入或指定的文件file中搜索与指定模式pattern匹配的字符行,并输出这些匹配字符行,grep命令的选项参数
非常多,具体的可以参考LInux的man手册,下面总结一下用到比较多的:
当要查找的文件为'-'时,表示在标准输入流中查找匹配字符串。
$ grep "we" -
gee #此行为输入
we #此行为输入
we
wo #此行为输入
we are the #此行为输入
we are the
ctrl+D (表示文件末尾EOF,可以终止输入)
当输入一行能够匹配模式,就输出这行,否则不输出。
下面这个文件是演示文件。
$ vi grep.txt
$ cat -n grep.txt
1 one
2 Two
3 three
4 four
5 five
6 six
7 Seven
8 eight
9 nine
10 ten
$ grep o grep.txt # 写成 grep "o" grep.txt作用一样
one
Tw o
f our
使用 -v选项可以反转搜索即输出不匹配模式的字符行。
$ grep -v o grep.txt
three
five
six
Seven
eight
nine
ten
使用 -n选项可以显示匹配的字符行的行号
$ grep -c o grep.txt
$ grep -e o -e f grep.txt #输出包含字符t或f的行
one
Tw o
four
five
grep默认情况下区分大小写的。使用-i选项忽略模式匹配大小写
$ grep -i T grep.txt
Two
three
eigh t
ten
使用-b选项,可以显示匹配字符行在文件中的字节偏移量
$ grep -b o grep.txt
0:one
5:Two
16:four
使用-A选项,可以显示匹配字符行下面n行
$ grep -A 2 "f" grep #显示匹配字符行下面2行
four
five
six
Seven
使用-B选项,可以显示匹配字符行上面n行
$ grep -B 2 "f" grep #显示匹配字符行上面2行
Two
three
four
five
使用-C选项,可以显示匹配字符行上面n行和下面n行
$ grep -C 2 "f" grep #显示匹配字符行上面2行和下面2行
Two
three
four
five
six
Seven
二、匹配模式pattern
默认情况下,grep命令使用基本的Unix类型的正则表达式表示匹配模式,Unix类型的正则表达式使用特殊字符定义
如何查找匹配模式,具体的匹配规则可以查看正则表达式的相关资料,下面是一些具体例子:
需要注意的是:使用-E选项可以使用扩展表达式模式,这种模式下grep命令能使用更多的正则表达式的特性。
1、显示以"five"开头的行
$ grep "^five" grep.txt
2、显示不以"five"开头的行
$ grep -v "^five" grep.txt
3、显示在当前目录下所有以g开头的文件中包含"five"的行
$ grep "five" g*
4、显示在当前目录下文件 a,b,c中包含"five"的行
$ grep 'five' a b c
5、查找 "five" 和 "one" :
$ grep -E "five|one" grep.txt
6、查找grep.txt中的空白行
$ grep "^$" grep.txt
7、查找"Five"或"five"
$ grep "[Ff]ive" grep.txt
一、基本用法
命令格式如下:
grep [option] pattern [file]
grep将在输入或指定的文件file中搜索与指定模式pattern匹配的字符行,并输出这些匹配字符行,grep命令的选项参数
非常多,具体的可以参考LInux的man手册,下面总结一下用到比较多的:
当要查找的文件为'-'时,表示在标准输入流中查找匹配字符串。
$ grep "we" -
gee #此行为输入
we #此行为输入
we
wo #此行为输入
we are the #此行为输入
we are the
ctrl+D (表示文件末尾EOF,可以终止输入)
当输入一行能够匹配模式,就输出这行,否则不输出。
下面这个文件是演示文件。
$ vi grep.txt
$ cat -n grep.txt
1 one
2 Two
3 three
4 four
5 five
6 six
7 Seven
8 eight
9 nine
10 ten
$ grep o grep.txt # 写成 grep "o" grep.txt作用一样
one
Tw o
f our
使用 -v选项可以反转搜索即输出不匹配模式的字符行。
$ grep -v o grep.txt
three
five
six
Seven
eight
nine
ten
使用 -n选项可以显示匹配的字符行的行号
$ grep -n o grep.txt
1:one
2:Two
4:four
$ grep -c o grep.txt
3
使用 -e选项指定多个匹配模式$ grep -e o -e f grep.txt #输出包含字符t或f的行
one
Tw o
four
five
grep默认情况下区分大小写的。使用-i选项忽略模式匹配大小写
$ grep -i T grep.txt
Two
three
eigh t
ten
使用-b选项,可以显示匹配字符行在文件中的字节偏移量
$ grep -b o grep.txt
0:one
5:Two
16:four
使用-A选项,可以显示匹配字符行下面n行
$ grep -A 2 "f" grep #显示匹配字符行下面2行
four
five
six
Seven
使用-B选项,可以显示匹配字符行上面n行
$ grep -B 2 "f" grep #显示匹配字符行上面2行
Two
three
four
five
使用-C选项,可以显示匹配字符行上面n行和下面n行
$ grep -C 2 "f" grep #显示匹配字符行上面2行和下面2行
Two
three
four
five
six
Seven
二、匹配模式pattern
默认情况下,grep命令使用基本的Unix类型的正则表达式表示匹配模式,Unix类型的正则表达式使用特殊字符定义
如何查找匹配模式,具体的匹配规则可以查看正则表达式的相关资料,下面是一些具体例子:
需要注意的是:使用-E选项可以使用扩展表达式模式,这种模式下grep命令能使用更多的正则表达式的特性。
1、显示以"five"开头的行
$ grep "^five" grep.txt
2、显示不以"five"开头的行
$ grep -v "^five" grep.txt
3、显示在当前目录下所有以g开头的文件中包含"five"的行
$ grep "five" g*
4、显示在当前目录下文件 a,b,c中包含"five"的行
$ grep 'five' a b c
5、查找 "five" 和 "one" :
$ grep -E "five|one" grep.txt
6、查找grep.txt中的空白行
$ grep "^$" grep.txt
7、查找"Five"或"five"
$ grep "[Ff]ive" grep.txt