1、grep:根据模式搜索文本,并将符合模式的文本行打印出来
使用基本正则表达式定义的模式来过滤文本的命令
grep 选项 模式(正则表达式) 参数
模式:由文本字符和正则表达式的元字符组合而成的匹配条件
-E:扩展正则表达式
-i:不区分大小写
-w:匹配整个单词
-x:匹配整行
-v:显示不匹配的行
--colour/--color:高亮显示匹配字符串
-A:打印匹配本身以及后面的几行
-B:打印匹配本身以及前面的几行
-C:打印匹配本机以后前后的几行
-o:只显示匹配到的字符串
-c:显示匹配了多少次
-n:在行首显示行号
2、正则表达式:分为基本正则表达式和扩展正则表达式
基本正则表达式(Basic REGEXP(REgular EXPression)):是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
元字符:指在正则表达式中起特殊意义的字符,元字符和shell的通配符基本相同,但是某些字符有着不同的意义
正则表达式默认是以贪婪模式匹配(尽可能长的去匹配)
‘搜寻字符串‘是正则表达式,为了避免shell的元字符对正则表达式的影响,使用‘‘单引号括起来,尽量避免使用""双引号,引号有时可省略
. 匹配任意单个字符(在shell通配符中用?来表示)
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符(和shell统配符相同)
字符集:
[:digit:] 数字
[:lower:] 小写字母
[:upper:] 大写字母
[:punct:] 标点符号
[:space:] 空格
[:alpha:] 大小写字母
[:alnum:] 数字和大小写字母
匹配次数:
* 匹配其前面的字符任意次,可以是0次(shell通配符代表匹配任意长度的任意字符)
.* 匹配任意字符任意次
\? 匹配其前面的字符1次或0次
\{m,n\} 匹配其前面的字符最少m次,最多n次
位置锚定:
^ 锚定行首,次字符后面的任意内容必须出现在行首
$ 锚定行尾,次字符前面的任意内容必须出现在行尾
^$ 空白行
\<或\b 锚定词首,其后面的任意字符必须作为单词的首部出现
\>或\b 锚定词尾,其前面的任意字符必须作为单词的尾部出现
分组:后向引用功能,
\(\)
\1 引用第一个括号以及与之对应的右括号所包括的所有内容
\2
\3
扩展正则表达式(EXtended REGEXP):egrep(匹配扩展正则表达式)
使用grep -E或egrep命令(egrep在一些发行版中已经不再使用,请使用grep -E)
在扩展正则表达式中元字符意义基本和基本正则表达式相同
次数匹配多一个元字符+,代表匹配其前的字符至少一次
分组();比基本正则表达式更明确
引入或者的概念用|表示
例如a|b代表a或b,(A|B)C代表AC或BC
fgerp:fast gerp(不支持正则表达式)
命令选项和grep相同
fgerp命令和grep、egrep不同的是,因为他搜索字符串而不是搜索匹配表达式的模式,fgerp命令使用快速的压缩算法。当处理大型文件时,fgerp比grep要快,当然fgerp自然比grep功能要弱。
Linux学习之grep及正则表达式