grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。grep有三种变形,即:
grep:标准grep命令,本章大部分篇幅集中讨论此格式。
egrep:扩展grep,支持基本及扩展的正则表达式,但不支持/ q模式范围的应用,与之相对应的一些更加规范的模式,这里也不予讨论。
fgrep:快速grep。允许查找字符串而不是一个模式。不要误解单词fast,实际上它与grep速度相当。

一、grep的格式

grep [选项]基本正则表达式[文件]

1、显示包含“48”字符串 $grep -c "48" data.f

2、显示满足匹配模式的所有行行数 $grep -n "48" data.f

3、显示不包含48的所有行 $grep -v "48" data.f

4、精确匹配,只含有48的所有行 $grep  "48/>" data.f

5、大小写敏感,缺省情况下, grep是大小写敏感的,如要查询大小写不敏感字符串,必须使用- i开关。

$grep -i "sept" data.f

二、grep和正则表达式

使用正则表达式使模式匹配加入一些规则,因此可以在抽取信息中加入更多选择。使用正则表达式时最好用单引号括起来,这样可以防止grep中使用的专有模式与一些shell命令的特殊方式相混淆。

1、模式范围:假定要抽取代码为484和483的城市位置 $grep '48[34]' data.f

2、不匹配行首:$grep '^[^48]' data.f

3、设置大小写:$grep '[Ss]ept' data.f

三、系统grep命令

1、如果要查询目录列表中的目录,方法如下:$ls -l |grep '^d'

2、如果在一个目录中查询不包含目录的所有文件,方法如下:$ls -l |grep '^[^d]'

3、要查询其他用户和其他用户组成员有可执行权限的目录集合,方法如下:$ls -l |grep '^d.....x..x'

四、小结

希望大家已经理解了grep的灵活性,它是一个很强大而流行的工具,像其他许多UNIX工具一样,已经被使用在DOS中。如果要通过文件快速查找字符串或模式, grep是一个很好的选择。简单地说, grep是shell编程中很重要的工具。