Linux命令 - grep
搜索输入文件,查找与指定的pattern(s)匹配的内容并输出到标准输入
用法
grep [-abcdDEFGHhIiJLlmnOopqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color[=when]]
[--colour[=when]] [--context[=num]] [--label] [--line-buffered]
[--null] [pattern] [file ...]
选项
- -A num, –after-context=num
- 输出匹配行之后num行
- -B num, –before-context=num
- 输出匹配行之后num行
- -C [num, –context=num]
- 输出匹配行之前和之后num行。num默认为2,等同于
-A 2 -B 2
。注:选项和参数之间可以没有空格
- 输出匹配行之前和之后num行。num默认为2,等同于
- -c, –count
- 限制输出的匹配行的数量
- –colour=[when, –color=[when]]
- 给输出中与pattern匹配的内容标记颜色。颜色值保存在GREP_COLOR环境变量中。when可取
'never'
、'always'
、'auto'
。
- 给输出中与pattern匹配的内容标记颜色。颜色值保存在GREP_COLOR环境变量中。when可取
- -E, –extended-regexp
- 将pattern作为扩展的正则表达式来解释
- -e pattern, –regexp=pattern
- 可用来指定多个搜索的pattern,输入行与其中任意一个pattern匹配就会被输出
- –exclude filename_pattern
- 不搜索与给定的
filename_pattern
相匹配的文件。注意:--exclude
的优先级高于--include
。
- 不搜索与给定的
- –exclude-dir dir_pattern
- 如果指定了-R选项,该选项用来指定不进行搜索的文件夹。注意:
--exclude-dir
的优先级高于--include-dir
。
- 如果指定了-R选项,该选项用来指定不进行搜索的文件夹。注意:
- -F, –fixed-strings
- 将pattern作为固定字符串来进行匹配
- -f file, –file=file
- 从文件中读取pattern(s), 文件中每行为一个pattern
- -G, –basic-regexp
- 将pattern作为标准的正则表达式进行解释
- -H
- 在每行输出的头部添加匹配行所在的文件名
- -h, –no-filename
- 与-H相反,不输出文件名
- -i, –ignore-case
- 匹配pattern的时候,不区分大小写。grep默认区分大小写
- –include
- 只对与给定文件名pattern相匹配的文件进行搜索。文件名匹配可匹配文件全路径名和文件名
- –include-dir
- 只对与给定文件夹pattern相匹配的文件夹进行搜索
- -L, –files-without-match
- 只输出不包含匹配行的文件名,不输出匹配行,每个文件名只打印一次
- -l, –files-with-match
- 只输出包含匹配行的文件名,每个文件名只打印一次
- -m num, –max-count=num
- 在文件中找到num个匹配行之后就停止搜索该文件,开始搜索下一个文件
- -n, –line-number
- 在输出行的开头添加该匹配行在文件中的行号,行号从1开始
- -o, –only-matching
- 只打印匹配行的匹配内容
- -q, –quiet, –silent
- 安静模式,一旦搜索到文件中有匹配就停止搜索该文件,开始搜索下一个文件。降低搜索成本。
- -R, -r, –recursive
- 递归搜索文件夹的子目录
- -s, –no-message
- 静音模式:忽略不存在的文件和不可读的文件。
- -v, –invert-match
- 反相匹配,选择不包含匹配内容的行
- -w, –word-regexp
- 将pattern作为一个词的匹配对输入行进行词匹配
- -x, –line-regexp
- 将pattern作为一行的匹配对输入行进行整行匹配
EXAMPLES
查找文件中出现的“foo”并输出前后5行的内容
$ grep -C 5 "foo" myfile
查找文件中不包含“foo”或者“bar”的行
$ grep -v -e 'foo' -e 'bar' myfile
查找包含“foo”或者“Foo”的行,输出文件名
$ find ./ -type f -exec grep -l "foo" {} \;