9.5 在文本文件中搜索匹配的模式

grep

locate命令可以搜索文件和目录的名称,但是不能搜索文件的内容。要搜索文件内容,应该使用grep命令。grep的处理过程基本上就是,为它提供一个搜索想要匹配的模式,指定要搜索的一个或一组文件(甚至是整个硬盘空间),然后grep就会输出能够与搜索模式匹配的各行内容的列表。

  1. $ grep pain three_no_more_forever.txt
  2. all alone and in pain

这个例子是用grep来检查一个文件中是否包含pain这个词(文件的内容是Peter Von Zer Muehlen写的一首名为“Three No More Forever”的诗)。当然,这个文件中有pain这个词,所以grep就在终端界面上打印出包含搜索内容的那一行。但如果想一次在多首Peter所写的诗中进行搜索,又该怎么办呢?使用通配符可以解决这一问题!

  1. $ grep pain *
  2. fiery inferno in space.txt:watch the paint peel,
  3. three_no_more_forever.txt:all alone and in pain
  4. the speed of morning.txt:of a Chinese painting.
  5. 8 hour a day.txt:nice paint job too
  6. ghost pain.txt:Subject: ghost pain

注意,grep找出了所有使用pain字符串的地方,包括paintpainting。还要注意grep是如何显示每个包含搜索内容的文件名,以及包含搜索内容的相应文本行的。到目前为止,用grep在文件中进行搜索还是相当简单的。所以现在应该把搜索复杂化一些,这正是下一节将要介绍的内容。