Linux 中 Grep 命令使用方法
的有关信息介绍如下:grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。
在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。
首先创建一个演示文档用于后续对 grep 命令的讲解演示:
1、在单个文件中搜索特定的字符串,输出为包含特定字符串的文本行
2、在多个文件中检索指定的字串,输出为包含特定字符串的文件名和文本行
为了演示需要先将刚才的演示文档复制一份。输出的文本行前面会加上相应的文件名。
3、利用 grep -i 进行大小写无关的搜索
将忽略大小写的区别,这样的话,字符串“the”,“The”和“THE”都将被搜索。
4、使用用正则表达式
例如,要搜索全部以“lines”开始以“empty”结束的字串,如搜索“lines[之间任意字]empty”,并且忽略大小写:
正则表达式遵循的几个重复的操作:
. ? 最多匹配一次
. * 匹配零次或者任意多次
. + 匹配一次以上
. {n} 匹配n次
. {n,} 最少匹配n次
. {,m} 最多匹配m次
. {n,m} 匹配n到m次
5、用 grep -w 搜索整个词,而不是词中的部分字符串
搜索包含单词为“is”的文本行,当然包含“his”, “this” 等的文本行将忽略:
6、利用 grep -A -B -C 显示所匹配的文本行的前/后/前后一些行内容
对于一些大型文件,不仅显示所匹配的文本行,而且显示之前/之后/前后的一些文本行也是很有用的。为演示需要,先创建另一个演示文档:
6.1、显示匹配行之后的行 -A(After)
例如,显示匹配行之后的三行内容(空行也算):
6.2、显示匹配行之前的行 -B(Before)
例如,显示匹配行之前的两行内容(空行也算):
6.3、显示匹配行前后的行 -C
例如,显示匹配行前后的各两行内容(空行也算):
7、高亮显示匹配的内容
需要设置 GREP_OPTIONS 环境变量:
然后再进行搜索。
8、利用 grep -r 在目录中递归搜索
如果在目录中即有文件又有目录,则普通的搜索只搜索文件而不搜索目录,利用 -r 选项即可递归进行搜索,搜索目录下的所有文件及其子目录内的文件
9、利用 grep -v 搜索不包含特定字符串的文本行
例如显示所有不包含字符串“go”的文本行:
10、显示不包含所有几个特定字符串的文本行
11、利用grep -c统计所匹配的字符串数目
例如:
查找有多少行匹配字符串:
查找有多少行不匹配字符串:
12、利用 grep -l 只显示包含特定字符串的文件名称
13、利用 grep -o 只显示所匹配的字符串
默认的搜索显示的是匹配的文本行的所有内容,但是如果想只显示所搜的特定字符串,则就要使用 -o 选项了。乍看起来只显示所匹配的字符串好像用处不大,但在使用正则表达式的搜索中很有用处。
14、显示特定字符串的具体位置
例如:
15、利用 grep -n 同时显示行号