LINUX与UNIX SHELL编程指南008.pdf





《LINUX与UNIX SHELL编程指南008.pdf》由会员分享,可在线阅读,更多相关《LINUX与UNIX SHELL编程指南008.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下载第8章 grep 家 族相信g r e p是U N I X和L I N U X中使用最广泛的命令之一。g r e p(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式,g r e p打印包含模式的所有行。g r e p支持基本正则表达式,也支持其扩展集。g r e p有三种变形,即:G r e p:标准g r e p命令,本章大部分篇幅集中讨论此格式。E g r e p:扩展g r e p,支持基本及扩展的正则表达式,但不支持 q模式范围的应用,与之相对应的一些更加规范的模式,这里也不予讨论。F g r e p:快速g r e p。允许查找字符串而不是一个模式。不要误解单词
2、 f a s t,实际上它与g r e p速度相当。在本章中我们将讨论:grep(参数)选项。匹配g r e p的一般模式。只匹配字母或数字,或两者混用。匹配字符串范围。实际上应该只有一个g r e p命令,但不幸的是没有一种简单形式能够统一处理 g r e p的三种变形,将之合而为一,并保持 g r e p单模式处理时的速度。GNU grep虽然在融合三种变形上迈进了一大步,但仍不能区分元字符的基本集和扩展集。上一章只讨论了基本的正则表达式,但在查看g r e p时也涉及到一些扩展模式的匹配操作。然而,首先还是先讨论一下在 g r e p和f g r e p及e g r e p中均可使用的g
3、 r e p模式吧。开始讨论之前,先生成一个文件,插入一段文本,并在每列后加入 键,g r e p命令示例中绝大多数将以此为例,其命名为 d a t a.f。生成一个文件,但不知其含义,将是一件很枯燥的事。那么先来看看d a t a.f的记录结构。第1列:城市位置编号。第2列:月份。第3列:存储代码及出库年份。第4列:产品代号。第5列:产品统一标价。第6列:标识号。第7列:合格数量。8.1 grepg r e p一般格式为:grep 选项基本正则表达式文件这里基本正则表达式可为字符串。8.1.1 双引号引用在g r e p命令中输入字符串参数时,最好将其用双引号括起来。例如:“m y s t
4、r i n g”。这样做有两个原因,一是以防被误解为 s h e l l命令,二是可以用来查找多个单词组成的字符串,例如:“jet plane”,如果不用双引号将其括起来,那么单词 p l a n e将被误认为是一个文件,查询结果将返回“文件不存在”的错误信息。在调用变量时,也应该使用双引号,诸如:g r e p“$M Y VA R”文件名,如果不这样,将没有返回结果。在调用模式匹配时,应使用单引号。8.1.2 grep选项常用的g r e p选项有:-c 只输出匹配行的计数。-i 不区分大小写(只适用于单字符)。-h 查询多文件时不显示文件名。-l 查询多文件时只输出包含匹配字符的文件名。-
5、n 显示匹配行及行号。-s 不显示不存在或无匹配文本的错误信息。-v 显示不包含匹配文本的所有行。8.1.3 查询多个文件如果要在当前目录下所有.d o c文件中查找字符串“s o r t”,方法如下:$grep sort*.doc或在所有文件中查询单词“sort it”$grep sort it*现在讲述在文本文件中g r e p选项的用法。8.1.4 行匹配$grep-c 48data.f$4g r e p返回数字4,意义是有4行包含字符串“4 8”。现在显示包含“4 8”字符串的4行文本:第8章 g rep 家族57下载8.1.5 行数显示满足匹配模式的所有行行数:行数在输出第一列,后跟
6、包含4 8的每一匹配行。8.1.6 显示非匹配行显示所有不包含4 8的各行:8.1.7 精确匹配可能大家已注意到,在上一例中,抽取字符串“4 8”,返回结果包含诸如4 8 4和4 8 3等包含“4 8”的其他字符串,实际上应精确抽取只包含 4 8的各行。注意在每个匹配模式中抽取字符串后有一个键,所以应操作如下:表示点击t a b键。使用g r e p抽取精确匹配的一种更有效方式是在抽取字符串后加 。假定现在精确抽取 4 8,方法如下:8.1.8 大小写敏感缺省情况下,g r e p是大小写敏感的,如要查询大小写不敏感字符串,必须使用-i开关。在d a t a.f文件中有月份字符S e p t,
7、既有大写也有小写,要取得此字符串大小写不敏感查询,方法如下:8.2 grep和正则表达式使用正则表达式使模式匹配加入一些规则,因此可以在抽取信息中加入更多选择。使用正则表达式时最好用单引号括起来,这样可以防止 g r e p中使用的专有模式与一些 s h e l l命令的特殊方式相混淆。58第二部分 文 本 过 滤下载8.2.1 模式范围假定要抽取代码为4 8 4和4 8 3的城市位置,上一章中讲到可以使用 来指定字符串范围,这里用4 8开始,以3或4结尾,这样抽出4 8 4或4 8 3。8.2.2 不匹配行首如果要抽出记录,使其行首不是4 8,可以在方括号中使用记号,表明查询在行首开始。8.
8、2.3 设置大小写使用-i开关可以屏蔽月份 S e p t的大小写敏感,也可以用另一种方式。这里使用 模式抽取各行包含S e p t和s e p t的所有信息。如果要抽取包含S e p t的所有月份,不管其大小写,并且此行包含字符串 4 8 3,可以使用管道命令,即符号“|”左边命令的输出作为“|”右边命令的输入。举例如下:不必将文件名放在第二个g r e p命令中,因为其输入信息来自于第一个 g r e p命令的输出。8.2.4 匹配任意字符如果抽取以L开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为 5个字符:将上述代码做轻微改变,头两个是大写字母,中间两个任意,并以 C结尾:
9、8.2.5 日期查询一个常用的查询模式是日期查询。先查询所有以 5开始以1 9 9 6或1 9 9 8结尾的所有记录。使用模式5.1 9 9 6,8。这意味着第一个字符为 5,后跟两个点,接着是 1 9 9,剩余两个数字是6或8。第8章 g rep 家族59下载查询包含1 9 9 8的所有记录的另外一种方法是使用表达式 0-9 3 8,含义是任意数字重复3次,后跟数字8,虽然这个方法不像上一个方法那么精确,但也有一定作用。8.2.6 范围组合必须学会使用 抽取信息。假定要取得城市代码,第一个字符为任意字符,第二个字符在0到5之间,第三个字符在0到6之间,使用下列模式即可实现。这里返回很多信息,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINUX与UNIX SHELL编程指南008 LINUX UNIX SHELL 编程 指南 008

限制150内