grep、fgrep 和 egrep 命令

  • Post author:
  • Post category:其他

grep 命令一次只能搜索一个指定的模式;

egrep 命令检索扩展的正则表达式(包括表达 式组和可选项);

fgrep 命令检索固定字符串,它不识别正则表达式,是快速搜索命令

 

grep [选项] 过滤条件 哪个文件
选项
–color=auto
-v:显示过滤反向
-E:过滤表达式
-i :忽略大小写
-o:仅显示匹配到的字符串本身
-q:静默模式,不输出任何信息
-A#after,后#行
-B#before,前#行
-C#context,前后各#行
-E:使用ERE

基本正则表达式字符:
字符匹配
.: 匹配任意单个字符:
[] 匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
[:digit:]
[:lower:]
[:upper:]
[:alpha:]
[:alnum:]
[:punct:]
[:space:]
匹配次数:用在指定次数字符后面,用于指定前面的字符要出现的次数:
*:匹配前面的字符任意次数
.* 任意长度的任意字符
\? 匹配其前面的字符0或1次,即前面可有可无
\+ 匹配其前面至少一次
\{m\} 匹配前面的字符m次
\{m,n\} 匹配前面的至少m次,最多n次
 
位置锚定
^ :行首锚定,用于模式的最左侧
$ :行尾锚定,用于模式的最右侧
^$ 空行
^pattern$:用于模式匹配整行
\< \b:词首锚定,用于单词模式的左侧
\> \b:词首锚定,用于单词模式的右侧
 
分组:
\(\) 将一个或多个字符捆绑在一起,当做一个整体进行处理
\(xy\)*ab
后向引用:引用前面的分组括号中的模式所匹配字符(而非)
练习:
1、显示/proc/meminfo文件中以大小写s开头的行:(要求:使用2中方式)
grep -i ‘^s’ /proc/meminfo
grep ^[Ss] /proc/meminfo
grep -v ‘bin/bash$’ /etc/passwd
 
egrep 及扩展的正则表达式
grep [OPTIONS] PATTERN [FILE…]
扩展正则表达的元字符
字符匹配:
.
[]
[^]
次数匹配
*
?0或1次
+ 一次或多次
{m} 匹配m次
{m,n} 至少m次,至多n次
锚定
^
$
\< ,\b
\>, \b
分组:
()
后向引用:\1,\2,…
或者a|b
C|cat:C或者cat
(C|c)at