Grep命令及相关的正则表达

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep [选项] [模式] [文件]

在一个或者多个文件中搜索满足搜索条件的文本行。grep的参数选项如下:

参数 意义
-c 只输出匹配行的数量
-i 搜索的时候忽略大小写
-h 查询多个文件是不显示文件名
-l 查询多个文件时只显示包含匹配字符的文件名
-n 查询匹配行并显示行号
-v 显示不包含匹配文本字符的所有行
-? 同时显示匹配文本上下的?行。?为具体数值
-w 匹配整词
-x 匹配整行

grep支持正则表达式

正则表达式的一些规则(规则尽量包含在引号之中,一是防止被认为是shell命令,二是可以查找多个字符串):

符号 意义
^ 锚定行的开始。如‘^grep’匹配所有以grep开头的行
$ 锚定行的结尾。
. 匹配一个非换行符的任意字符
* 匹配零个或多个先前的字符。那么.*代表任意字符。
[] 匹配一个指定范围内的字符。如'[0-9a-zA-Z]’
[^] 匹配一个不在指定范围内的字符
\(..\\) 标记匹配字符
\< 锚定单词的开始,即查找以什么开头的单词
\> 锚定单词的结尾
\b 单词锁定符,即’\bgrep\b’只匹配grep这个单词

grep命令后使用双引号、单引号和不用引号的区别

双引号:输出引用内容,如果内容中又命令、变量等,会先解析变量和命令,然后输出最终内容。被双引号括起的内容常量还是常量,但变量会发生替换,替换成变量的内容。$ \ " 等字符在双引号中又特殊的意义。

单引号:所见即所得,即直接输出引号内的内容原样。被单引号引用的内容不管是什么不会发生替换。

不加引号:不会将含有空格的字符串作为一个整体输出,如果内容中有命令、变量等,会先解析相应的结果,然后输出。


除非特别声明,文章均为牛会飞的博客原创,遵循署名-非商业使用-相同方式共享授权协议
转载请注明出处: https://blogfei.com/grep-and-regular-expression/

已有1条评论