grep 介绍
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的打印出来。grep全称是global regular expression print(全面搜索正则表达式并行打印)
grep的工作方式:它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
grep 格式
grep [OPTIONS] PATTERN [FILE...]
grep功能
Grep是一个强大的工具,用于将正则表达式与文件,多个文件或输入流中的文本进行匹配。它会搜索在命令行中指定的文本的PATTERN,并输出结果
grep示例
grep 参数
-a, --text #等同于 --binary-files=text
-b, --byte-offset #在每行输出之前,在输入文件中打印基于0的字节偏移量
-c, --count #打印符合PARRERN的行数
-d, --directories=ACTION #读取目录的方式;ACTION 可以是`read', `recurse',或`skip'
-D, --devices=ACTION #读取设备、先入先出队列、套接字的方式;ACTION 可以是`read'或`skip'
-e, --regexp=PATTERN #用 PATTERN 来进行匹配操作
-E, --extended-regexp #将PATTERN解释为扩展正则表达式
-f, --file=FILE #从 FILE 中读取PATTERN
-F, --fixed-strings #将PATTERN解释为固定字符串的列表
-G, --basic-regexp #将PATTERN解释为基本的正则表达式
-h, --no-filename #在每行输出之前,不打印该行所属的文件名称
-H, --with-filename #在每行输出之前,打印该行所属的文件名称
-i, --ignore-case #忽略大小写
-I #列出符合查找内容的文件名称
-l, --files-with-matches #列出文件内容符合指定PARRERN的文件名称
-L, --files-without-match #列出文件内容不符合指定PARRERN的文件名称
-m, --max-count=NUM #在匹配行NUM之后停止读取文件
-n, --line-number #在每行输出之前,打印输入文件中的从1开始的行号。
-o, --only-matching #只显示匹配PATTERN 部分
-P, --perl-regexp #将PATTERN解释为Perl正则表达式,
-q, --quiet, --silent #不显示任何信息
-s,--no-messages #不显示错误信息
-T, --initial-tab #确保实际行内容的第一个字符位于制表位上,以便制表符对齐看起来正常。
-V, --version #打印grep的版本号,然后退出
-w, --word-regexp #只选择包含构成全词匹配的那些行。
-x, --line-regexp #只选择完全匹配整行的匹配项
--help #打印帮助信息,然后退出。
--binary-files=TYPE #设定二进制文件的TYPE 类型;
grep的规则表达式:
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) #标记匹配字符,如'\(love\)',love被标记为1。
\< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。