电脑技术学习

UNIX 新手指南,第 3 部分:正则表达式

dn001

grep g[a-z]lf

  此方法产生以下输出:

I like golf.
I created gilf.

  从输出中可以看到,此方法搜索落在 a 和 z 之间的任何字符(按字母顺序)。这排除了在 g 和 lf 之间具有数字或符号的字符串,这些字符串不是真正的单词,可能不属于您所需的搜索条件。

  方括号中的短横线

  通过在方括号中包括附加集合,您还可以搜索多个字符序列。例如,若要搜索 a-z 和 A-Z,可以使用以下搜索:

grep g[a-zA-Z]lf

  脱字号 (^)

  当您的字符序列列表变得更长时,可能发现通过避免某些字符而不是指定想要查找的字符来进行搜索会更容易。这可以通过在搜索序列前在方括号中使用脱字符 (^) 来实现。这说起来挺复杂的,但是通过观察一个示例,应该是很容易理解的。通过使用以下 grep 命令来更改您的搜索,以避免数字但是包括所有其他字符:

grep g[^0-9]lf

  此搜索类似于前面查找所有字母字符的搜索,但是此搜索还返回诸如数字符号 (#) 和美元符号 ($) 等不属于字母并且也不在您排除的数字序列中的字符。

  星号

  要试验的下一个特殊字符是星号 (*),它是若干个重复操作符之一。大多数人都非常熟悉在命令行上使用星号作为文件名搜索条件(通配符),但是在正则表达式中使用星号还是相当新鲜的。星号指示搜索项(前一个字符或方括号表达式)可以出现零次、一次或多次。若要对此进行尝试,请将以下行添加到您已经在使用的 grep.txt 文件:

This time the o is missing in glf.
Some people might say goolf.
But they would not say goilf.

  现在整个文件应该类似如下:

I like golf.
Golf is played on grass.
I created gilf.
What is g2lf?
This time the o is missing in glf.
Some people might say goolf.
But they would not say goilf.

标签: