grep的常用和次常用选项

选项 选项2 英文 翻译
-P –perl-regexp PATTERN is a Perl regular expression 使用Perl正则表达式语法
-i –ignore-case ignore case distinctions 忽略大小写
-v –invert-match select non-matching lines 选择未匹配的那些行
-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 每个文件输出一个匹配的行数
-n –line-number print line number with output lines 输出匹配的数据的同时打印行号
-H –with-filename print the file name for each match 对于每一处匹配,都打印文件名
-h –no-filename suppress the file name prefix on output 在输出时,不输出文件名前缀(详见下方解释)
-o –only-matching show only the part of a line matching PATTERN 不打印整行,只显示匹配到的那一部分文字
-r –recursive like –directories=recurse 递归。如果没有指定目录,则取当前目录,否则使用指定目录
-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 显示匹配到的行的同时,并显示其前面的#行和后面的#行
–exclude-dir=DIR Exclude directories matching the pattern DIR from recursive searches. 递归搜索中排除匹配到的目录
–exclude=GLOB Skip files whose base name matches GLOB
(using wildcard matching).
如果通配符匹配到了某个文件名,那么跳过这个文件名
–include=GLOB Search only files whose base name matches GLOB
(using wildcard matching as described under –exclude).
只搜索那些符合通配符的文件

grep的部分帮助信息

[root@localhost ~]# grep --help
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

...(略)...

'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.
当文件是"-"时,读取标准输入。
如果没有没有给出文件的话,如果命令行给出了"-r"就读取"."(当前目录),否则读取"-"(标准输入)。
如果向grep传递了少于两个文件,就假定有"-h"选项(例:送给grep三个文件,结果匹配到一个文件,那么grep需要输出文件名,让你知道匹配到的是哪一个文件;如果送给grep一个文件的话,那么grep再显示文件名就显得有些多余了)。
Report bugs to: bug-grep@gnu.org
GNU Grep home page: <http://www.gnu.org/software/grep/>
General help using GNU software: <http://www.gnu.org/gethelp/>
[root@localhost ~]# 

示例

Usage: grep [OPTION]... PATTERN [FILE]...
Example: grep -i 'hello world' menu.h main.c
递归查找某目录下的(  包含某字符串[字符串忽略大小写]的)所有文件,只输出文件名
grep -rli  "字符串" --include="*.cpp" --include="*.h"  "目录"
递归查找某目录下的(不包含某字符串[字符串忽略大小写]的)所有文件,只输出文件名
grep -rliv "字符串" --include="*.cpp" --include="*.h"  "目录"
递归查找当前目录下所有包含某字符串的文件,输出文件名、行号、该行内容
grep -r -Hn "字符串" #(或)# grep -r -Hn "字符串" ./
递归查找当前目录下所有包含某单词(CharacterString大小写敏感)的文件,输出文件名、行号、该行内容
grep -r -Hn -P '\bCharacterString\b'    # 搜索"正则表达式 元字符 metacharacter"查看详情
递归查找当前目录下所有包含某单词(Character的大小写不敏感)的文件,输出文件名、行号、该行内容
grep -r -Hn -P '\b(?i)Character(?-i)String\b'  # 搜索"正则表达式 模式修改符"查看详情

完。

展开阅读全文

没有更多推荐了,返回首页