linux与unix shell编程指南008

linux与unix shell编程指南008

ID:34619488

大小:366.73 KB

页数:10页

时间:2019-03-08

linux与unix shell编程指南008_第1页
linux与unix shell编程指南008_第2页
linux与unix shell编程指南008_第3页
linux与unix shell编程指南008_第4页
linux与unix shell编程指南008_第5页
资源描述:

《linux与unix shell编程指南008》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、下载第8章grep家族相信grep是UNIX和LINUX中使用最广泛的命令之一。grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。grep有三种变形,即:Grep:标准grep命令,本章大部分篇幅集中讨论此格式。Egrep:扩展grep,支持基本及扩展的正则表达式,但不支持q模式范围的应用,与之相对应的一些更加规范的模式,这里也不予讨论。Fgrep:快速grep。允许查找字符串而不是一个模式。不要误解单词fast,实际上它与grep速度相当。在本章中我们将讨论:¥grep

2、(参数)选项。¥匹配grep的一般模式。¥只匹配字母或数字,或两者混用。¥匹配字符串范围。实际上应该只有一个grep命令,但不幸的是没有一种简单形式能够统一处理grep的三种变形,将之合而为一,并保持grep单模式处理时的速度。GNUgrep虽然在融合三种变形上迈进了一大步,但仍不能区分元字符的基本集和扩展集。上一章只讨论了基本的正则表达式,但在查看grep时也涉及到一些扩展模式的匹配操作。然而,首先还是先讨论一下在grep和fgrep及egrep中均可使用的grep模式吧。开始讨论之前,先生成一个文件,插入一段文本,并在每列后加入键,grep命令示例中绝大多数

3、将以此为例,其命名为data..f。生成一个文件,但不知其含义,将是一件很枯燥的事。那么先来看看data.f的记录结构。第1列:城市位置编号。第2列:月份。第3列:存储代码及出库年份。第4列:产品代号。第5列:产品统一标价。第6列:标识号。第7列:合格数量。第8章grep家族57下载8.1grepgrep一般格式为:grep[选项]基本正则表达式[文件]这里基本正则表达式可为字符串。8.1.1双引号引用在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“mystring”。这样做有两个原因,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串

4、,例如:“jetplane”,如果不用双引号将其括起来,那么单词plane将被误认为是一个文件,查询结果将返回“文件不存在”的错误信息。在调用变量时,也应该使用双引号,诸如:grep“$MYVAR”文件名,如果不这样,将没有返回结果。在调用模式匹配时,应使用单引号。8.1.2grep选项常用的grep选项有:-c只输出匹配行的计数。-i不区分大小写(只适用于单字符)。-h查询多文件时不显示文件名。-l查询多文件时只输出包含匹配字符的文件名。-n显示匹配行及行号。-s不显示不存在或无匹配文本的错误信息。-v显示不包含匹配文本的所有行。8.1.3查询多个文件如果要在当前目录下

5、所有.doc文件中查找字符串“sort”,方法如下:$grep"sort"*.doc或在所有文件中查询单词“sortit”$grep"sortit"*现在讲述在文本文件中grep选项的用法。8.1.4行匹配$grep-c"48"data.f$4grep返回数字4,意义是有4行包含字符串“48”。现在显示包含“48”字符串的4行文本:58第二部分文本过滤下载8.1.5行数显示满足匹配模式的所有行行数:行数在输出第一列,后跟包含48的每一匹配行。8.1.6显示非匹配行显示所有不包含48的各行:8.1.7精确匹配可能大家已注意到,在上一例中,抽取字符串“48”,返回结果包含诸如

6、484和483等包含“48”的其他字符串,实际上应精确抽取只包含48的各行。注意在每个匹配模式中抽取字符串后有一个键,所以应操作如下:表示点击tab键。使用grep抽取精确匹配的一种更有效方式是在抽取字符串后加>。假定现在精确抽取48,方法如下:8.1.8大小写敏感缺省情况下,grep是大小写敏感的,如要查询大小写不敏感字符串,必须使用-i开关。在data.f文件中有月份字符Sept,既有大写也有小写,要取得此字符串大小写不敏感查询,方法如下:8.2grep和正则表达式使用正则表达式使模式匹配加入一些规则,因此可以在抽取信息中加入更多选择。使用正则表

7、达式时最好用单引号括起来,这样可以防止grep中使用的专有模式与一些shell命令的特殊方式相混淆。第8章grep家族59下载8.2.1模式范围假定要抽取代码为484和483的城市位置,上一章中讲到可以使用[]来指定字符串范围,这里用48开始,以3或4结尾,这样抽出484或483。8.2.2不匹配行首如果要抽出记录,使其行首不是48,可以在方括号中使用^记号,表明查询在行首开始。8.2.3设置大小写使用-i开关可以屏蔽月份Sept的大小写敏感,也可以用另一种方式。这里使用[]模式抽取各行包含Sept和sept的所有信息。如果要

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。