linux基础之grep
grep,egrep,fgrep
grep:根据模式搜索文本,并将符合模式的文本行显示出来
grep [OPTIONS] PATTERN [FILE...]
-i:忽略大小写
--color:以高亮颜色显示
-v:显示没有被模式匹配的行
-o:只显示被匹配到的字符串
-E:使用扩展正则表达式
-A #:当某一行被匹配到,不但显示这一行,还显示其后面#行
-B #:当某一行被匹配到,不但显示这一行,还显示其前面#行
-C #:当某一行被匹配到,不但显示这一行,还显示其前后面#行
grep正则表达式(基本正则表达式)(默认情况下正则表达式工作在贪婪模式下)
.:匹配任意单个字符
*:匹配其前面的字符任意次
例子:a,b,ab,aab,acb,adb,amnb
a*b:b,ab,aab,
a.*b:ab,aab,acb,adb,amnb(a开头b结尾的字符串)
.*:任意长度的任意字符
\?:匹配其前面的字符1次或0次
a\?b:含有ab或b的行
\{m,n\}:匹配其前面的字符至少m次,之多n次
\{1,\}:至少出现一次
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
字符集合:[:digit:]数字 [:lower:]小写字母 [:upper:]大写字母 [:punct:]标点符号 [:spcce:]空白字符 [:alpha:]所有字母 [:alnum:]所有数字字母
例子:grep [[:digit]] /a.txt 查找出所有包含数字的行
位置锚定:
^:锚定行首,此字符后面的字符必须出现在行首
$:锚定行未,此字符前面的字符必须出现在行未
^$:空白行
\<或\b:其后面的任意字符必须作为单词首部出现
\>或\b:其前面的任意字符必须作为单词尾部出现
分组
\(\)
例子:\(ab\)*:ab整体出现n次。
后向引用
以上正则表达式为基本正则表达式,grep默认支持基本正则表达式。
扩展正则表达式
.:匹配任意单个字符
[]:匹配指定范围内的单个字符
[^]:匹配指定范围外的单个字符
次数匹配
*:匹配前面的字符任意次
\?:匹配前面的字符1次或0次
+:匹配其前字符至少一次
{m,n}:匹配其前面的字符至少m次,之多n次
|:或者 例子:C|cat 匹配C或cat (C|c)at 匹配Cat或cat
():分组
grep -E = egrep :即egrep默认支持扩展正则表达式