1、 语法
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
2、 描述
grep命令在输入文件中(如果没有输入文件,则从标准输入)寻找与模式PATTERN匹配的行,默认对匹配的行执行打印到标准输出的操作。
另外,egrep命令与grep –E相同,fgrep与grep –F相同。
3、 选项
-E,--extended-regexp
将把模式串当作扩展的正则表达式处理。
-F,--fixed-strings
将模式匹配串当作固定的字符串处理,用换行符分割,任何一个都需要匹配。
-?
同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行,总共显示5行。
-c,--count
只打印匹配的行数,不显示匹配的内容。
-H,--no-filename
当搜索多个文件时,显示匹配文件名前缀。(默认操作)
-h,--no-filename
当搜索多个文件时,不显示匹配文件名前缀。
-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
显示软件版本信息。
4、 示例
数据文件grep.data,内容如下
48 Dec 3BC1977 LPSX 68.00 LVX 2A 138
483 Sept 5AP1996 USP 65.00 LVX 2C 189
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV 2C 68
484 nov 7PL1996 CAD 49.00 PLV 2C 234
483 may 5PA1998 USP 37.00 KVM9D 644
216 sept 3ZL1998 USP 86.00 KVM9E 234 |
(1) 从文件中寻找与 47 匹配的行
[zjplus@demo ~]$ grep 47 grep.data 47 Oct 3ZL1998 LPSX 43.00 KVM9D 512 |
(2) 显示与之匹配的上下两行
[zjplus@demo ~]$ grep -2 47 grep.data 483 Sept 5AP1996 USP 65.00 LVX 2C 189
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV 2C 68 |
(3) 只显示匹配的行数
[zjplus@demo ~]$ grep -c 47 grep.data 1 |
(4) 不显示匹配的文件名
[zjplus@demo ~]$ grep 47 grep.data grep_data.bak grep.data:47 Oct 3ZL1998 LPSX 43.00 KVM9D 512 grep_data.bak:47 Oct 3ZL1998 LPSX 43.00 KVM9D 512 [zjplus@demo ~]$ grep -h 47 grep.data grep_data.bak 47 Oct 3ZL1998 LPSX 43.00 KVM9D 512 47 Oct 3ZL1998 LPSX 43.00 KVM9D 512 |
(5) 忽略大小写查找
[zjplus@demo ~]$ grep -i usp grep.data 483 Sept 5AP1996 USP 65.00 LVX 2C 189 483 may 5PA1998 USP 37.00 KVM9D 644 216 sept 3ZL1998 USP 86.00 KVM9E 234 |
(6) 安静查找
[zjplus@demo ~]$ grep -q USP grep.data [zjplus@demo ~]$ |
(7) 只打印与之匹配的文档清单
[zjplus@demo ~]$ grep -l 47 grep.data grep_data.bak grep.data grep_data.bak |
(8) 只打印与之不匹配的文档清单
[zjplus@demo ~]$ grep -L 47 grep.data grep_data.bak df.data df.data |
(9) 在前面加上行号
[zjplus@demo ~]$ grep -n 47 grep.data grep_data.bak df.data grep.data:5:47 Oct 3ZL1998 LPSX 43.00 KVM9D 512 grep_data.bak:5:47 Oct 3ZL1998 LPSX 43.00 KVM9D 512 |
(10) 不显示不存在或无匹配文本的错误信息
[zjplus@demo ~]$ grep dfsf not_exist grep: not_exist: 没有那个文件或目录 [zjplus@demo ~]$ grep -s dfsf not_exist [zjplus@demo ~]$ |
(11) 显示与之不匹配的行
[zjplus@demo ~]$ grep -v 47 grep.data 48 Dec 3BC1977 LPSX 68.00 LVX 2A 138
483 Sept 5AP1996 USP 65.00 LVX 2C 189
219 dec 2CC1999 CAD 23.00 PLV 2C 68
484 nov 7PL1996 CAD 49.00 PLV 2C 234
483 may 5PA1998 USP 37.00 KVM9D 644
216 sept 3ZL1998 USP 86.00 KVM9E 234
|
(12) 显示版本号
[zjplus@demo ~]$ grep -V grep (GNU grep) 2.5.1
Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|