Linux的那些事儿(10)----grep命令以及正则表达式
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编程中很重要的工具。
更多相关文章
- Emacs 快速参考 c-c++ 模式
- 设置STDIN_FILENO为非阻塞模式
- Linux 多线程 ”一写多读” 模式下的无锁设计
- linux下mysql表名大小写敏感问题
- 如果在两个模式中存在具有相似名称的删除表
- 既然sql对大小写不敏感,为什么几乎所有材料都用大写?
- 如何在SQL Server数据库模式中找到所有填充了100%空值的列?
- MySQL中的字符串模式匹配
- mysql表名忽略大小写