如何 grep 或准确找到我正在寻找的内容?

如何 grep 或准确找到我正在寻找的内容?

我如何搜索名为“Onderh”的单词?我想要进行高级搜索,例如:以“Onderh”开头的行或包含“Onderh”的行。

注意:本地备份目录,包含每天的 MySQL 快照“database.sql(文件大小:81902272)”。我需要在该文件中应用搜索。

[me@www win]$ ls
2011-03-01  2011-03-04  2011-03-07  2011-03-10  2011-03-13  2011-03-16  2011-03-19  2011-03-22  2011-03-25  2011-03-28  2011-03-31  2011-04-03  2011-04-06
2011-03-02  2011-03-05  2011-03-08  2011-03-11  2011-03-14  2011-03-17  2011-03-20  2011-03-23  2011-03-26  2011-03-29  2011-04-01  2011-04-04  2011-04-07
2011-03-03  2011-03-06  2011-03-09  2011-03-12  2011-03-15  2011-03-18  2011-03-21  2011-03-24  2011-03-27  2011-03-30  2011-04-02  2011-04-05  2011-04-08

[me@www 2011-04-08]$ ll
total 80092
-rw-r--r--  1 root root 81902272 Apr  8 01:00 database.sql
drwxr-xr-x 99 root root    12288 Apr  8 01:00 etc
drwxr-xr-x  4 root root     4096 Apr  8 01:00 home
drwxr-xr-x 10 root root     4096 Apr  8 01:00 html
drwxr-xr-x 14 root root     4096 Apr  8 01:00 postfixadmin-2.3

答案1

如果您想检查所有这些目录,请尝试:

[me@www win]$ grep -n ^Onderh */database.sql

查找以 Onderh 开头的行(-n 标志显示行号)。 是^一个特殊字符,用于将匹配项锚定到行首 - 如果您想在行中的任何位置找到它,请将其删除。

确认如果您有更复杂的要求,也可能值得研究。例如,如果您感兴趣的 sql 文件组织得不是很好,ack 将能够在整个目录结构中仅搜索 .sql 文件。

答案2

如果文件是文本文件,则可以使用带有正则表达式标志的 grep。

grep -R -E "^Onderh" *
grep -R "Onderh" *

首先将搜索以 onderh 开头的行,其次将搜索包含该行的所有行。

相关内容