电脑技术学习

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

dn001

grep golf grep.txt

  此命令在 grep.txt 文件中搜索字符串 golf 的所有实例,并输出包含该字符串的行。您的输出应该类似如下:

I like golf.

  使用方括号

  下一步,试验一些上面讨论过的特殊字符。您可以使用方括号(方括号表达式)来指示您想要搜索 golf 和 Golf:

grep [gG]olf grep.txt

  输出应该类似如下:

I like golf.
Golf is played on grass.

  句点

  若要搜索 golf 和 gilf,您同样可以使用方括号。取而代之的是,可以尝试使用一个句点来指示您想要搜索 g 和 lf 之间的任何字符:

$grep g.lf grep.txt

  输出应该类似如下:

I like golf.
I created gilf.

  搜索 golf、Golf 和 gilf

  您现在已经找到了获得每种 golf 变体的方法,但是还没有哪个搜索返回了所有三个实例:golf、Golf 和 gilf。花点时间考虑一下如何搜索所有三个实例。这可以通过多种方法来实现。下面是两个示例:

grep ..lf grep.txt
grep [gG][oi]lf grep.txt

  这两种方法都返回所有三行:

I like golf.
Golf is played on grass.
I created gilf.

  短横线

  您是否能够想出更多的方法来完成此任务呢?到目前为止,您仅学习了两个在正则表达式中使用的特殊字符。这只是开始!有些特殊字符在其他特殊字符之内使用。例如,当您将一组字符包括在方括号中时,您可以使用短横线 (-) 来搜索一系列字符。将以下行添加到您的文本文件:

What is g2lf?

  使用您到目前为止已学到的知识,您知道如果使用类似于 g.lf 或 g[oi2]lf 的正则表达式,则这一行将包括在搜索结果中。使用句点将返回在该位置具有任何字符的结果;使用 [oi2] 将返回仅在该位置具有 o i 或 2 的结果。通过使用一个短横线,您可以实现第三种方法,其中不只包括少数字符,但并不是包括每个字符:

标签: