强大的文本搜索工具(支持正则表达式)
查询文件中的内容
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 , --text
不要忽略二进制的数据。
-A<显示行数> , --after-context=<显示行数>
除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset
在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> , --before-context=<显示行数>
除了显示符合样式的那一行之外,并显示该行之前的内容。
-c , --count
计算符合样式的列数。
-C<显示行数> , --context=<显示行数>或-<显示行数>
除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> , --directories=<动作>
当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> , --regexp=<范本样式>
指定字符串作为查找文件内容的样式。
-E , --extended-regexp
将样式为延伸的正则表达式来使用。
-f<规则文件> , --file=<规则文件>
指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F , --fixed-regexp
将样式视为固定字符串的列表。
-G , --basic-regexp
将样式视为普通的表示法来使用。
-h , --no-filename
在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H , --with-filename
在显示符合样式的那一行之前,表示该行所属的文件名称。
-i , --ignore-case
忽略字符大小写的差别。
-l , --file-with-matches
列出文件内容符合指定的样式的文件名称。
-L , --files-without-match
列出文件内容不符合指定的样式的文件名称。
-n , --line-number
在显示符合样式的那一行之前,标示出该行的列数编号。
-o , --only-matching
只显示匹配PATTERN 部分。
-q , --quiet,--silent
不显示任何信息。
-r , --recursive
此参数的效果和指定"-d recurse"参数相同。
-s , --no-messages
不显示错误信息。
-v , --invert-match
显示不包含匹配文本的所有行。
-V , --version
显示版本信息。
-w , --word-regexp
只显示全字符合的列。
-x ,--line-regexp
只显示全列符合的列。
-y
此参数的效果和指定"-i"参数相同。 实战应用
文本内容i@MacBook-Air ~ % cat a.txt 123 eeeeee rwqrew oeiirut 32232
在a.txt中查询123字符串i@MacBook-Air ~ % grep 123 a.txt 123
查询123并现实行号i@MacBook-Air ~ % grep -n 123 a.txt 1:123
排除123,只显示其他内容,查看配置文件时排除注释很方便i@MacBook-Air ~ % grep -v 123 a.txt eeeeee rwqrew oeiirut 32232
使用正则表达式查询数字内容i@MacBook-Air ~ % grep -E "[1-9]+" a.txt 123 32232
同时显示匹配内容下面两行数据,如果不设置-A参数就只显示匹配行i@MacBook-Air ~ % grep -A 2 123 a.txt 123 eeeeee rwqrew
grep可以与其他命令组成管道进行复杂查询