grep 命令系列:使用 grep 命令来搜索多个单词

作者:杏彩彩票app下载

Linux系统中搜索、查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索。

要使用 grep 命令来搜索多个字符串或单词,我们该怎么做?例如我想要查找 /path/to/file 文件中的 word1、word2、word3 等单词,我怎么样命令 grep 查找这些单词呢?

在Linux系统当中,如何搜、索查找文件里面的内容呢? 这个应该是系统维护、管理当中遇到最常见的需求。那么下面介绍,总结一下如何搜索、查找文件当中的内容。

  1. 搜索某个文件里面是否包含字符串

    命令格式:grep "被查找的字符串" filename1

    例如:

    grep "0101034175" /data/transaction.20170118.log
    
  2. 在多个文件中检索某个字符串

    命令格式:

    1. grep "被查找的字符串t" filename1 filename2 filename3 ...
    2. grep "被查找的字符串" *.log
  3. 显示所检索内容在文件中的行数,可以使用参数-n

    命令格式: grep -n "被查找的字符串" *.log

  4. 检索时需要忽略大小写问题,可以使用参数“-i”

    命令格式: grep -i "被查找的字符串" *.log

  5. 从文件内容查找不匹配指定字符串的行

    命令格式:grep –v "被查找的字符串" 文件名

  6. 搜索、查找匹配的行数:

    命令格式:

    1. grep –c "被查找的字符串" 文件名
    2. grep "被查找的字符串" 文件名 | wc -l
  7. 递归搜索某个目录以及子目录下的所有文件

    命令格式:grep –r "被查找的字符串" 文件目录

  8. 获取哪些文件包含搜索的内容,并列出文件名

    命令格式:grep -H –r "被查找的字符串" 文件目录 | cut -d: -f1 [| uniq]

    例如:

    grep -H -r "v$temp_space_header" /u01/app/Oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1
    
    grep -H -r "v$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1 | uniq
    
  9. 获取与整个搜索字符匹配的内容

    命令格式:grep –w "被查找的字符串" 文件名

  10. grep命令与find 命令的结合,实现联合检索

    命令格式:find . -name '*.sql' -exec grep -i '被检索内容' {} ; -print

    例如:

    find . -name '*.sql' -exec grep -i 'v$temp_space_header' {} ; -print
    

grep 命令支持正则表达式匹配模式。要使用多单词搜索,请使用如下语法:

搜索、查找文件当中的内容,一般最常用的是grep命令,另外还有egrep, vi命令也能搜索文件里面内容

Linux命令-文件文本操作grep  http://www.linuxidc.com/Linux/2015-12/126259.htm

  1. grep'word1|word2|word3'/path/to/file

1:搜索某个文件里面是否包含字符串,使用grep "search content" filename1, 例如

grep正则表达式 http://www.linuxidc.com/Linux/2015-09/123035.htm

下的例子中,要在一个名叫 /var/log/messages 的文本日志文件中查找 warning、error 和 critical 这几个单词,输入:

$ grep ORA alert_gsp.log

Linux中正则表达式与文件格式化处理命令(awk/grep/sed) http://www.linuxidc.com/Linux/2013-03/81018.htm

  1. $ grep'warning|error|critical'/var/log/messages

$ grep "ORA" alert_gsp.log

Linux基础之grep和正则表达式 http://www.linuxidc.com/Linux/2016-10/136250.htm

仅仅只是要匹配单词(即该词两侧是单词分界符,针对西方以空格分隔的语言而言)的话,可以加上 -w 选项参数:

例如我们需要搜索、查找utlspadv.sql文件中包含ORA的字符内容

14 个 grep 命令的例子 http://www.linuxidc.com/Linux/2015-05/117626.htm

  1. $ grep-w'warning|error|critical'/var/log/messages
[Oracle@DB-Server admin]$ grep "ORA" utlspadv.sql

  --   ORA-XXXXX:        Monitoring already started. If for example you want 

  --   ORA-20111:

  --   ORA-20112:

  --   ORA-20113: 'no active monitoring job found'

  --   ORA-20113: 'no active monitoring job found'

  -- 0 |<PS> =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""

  -- |<PR> DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM=> 100% 0% 0% "" |<PR> ...

  -- =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" |<PR> ...

  -- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00

  -- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM

  -- ORA-20111:

  -- ORA-20112:

  --   ORA-20100:

  --   ORA-20113: 'no active monitoring job found'

  --   ORA-20113: 'no active monitoring job found'

[oracle@DB-Server admin]$ 

Linux文本处理工具grep和正则表达式及egrep与grep区别  http://www.linuxidc.com/Linux/2016-08/134046.htm

egrep 命令可以跳过上面的语法格式,其使用的语法格式如下:

如上所示,这个是一个模糊匹配,其实我是想要查看ORA这类错误,那么我要过滤掉哪一些没有用的,搜索的内容修改一下即可(当然也可以使用特殊参数,后面有讲述),如下所示。

Linux基础之-正则表达式(grep,sed,awk)  http://www.linuxidc.com/Linux/2017-05/144221.htm

  1. $ egrep -w'warning|error|critical'/var/log/messages
[oracle@DB-Server admin]$ grep "ORA-" utlspadv.sql

  --   ORA-XXXXX:        Monitoring already started. If for example you want 

  --   ORA-20111:

  --   ORA-20112:

  --   ORA-20113: 'no active monitoring job found'

  --   ORA-20113: 'no active monitoring job found'

  -- ORA-20111:

  -- ORA-20112:

  --   ORA-20100:

  --   ORA-20113: 'no active monitoring job found'

  --   ORA-20113: 'no active monitoring job found'

[oracle@DB-Server admin]$ 

Linux文本处理工具及grep  http://www.linuxidc.com/Linux/2017-03/142277.htm 

我建义您们加上 -i (忽略大小写) 和 --color 选项参数,如下示:

图片 1

正则表达式与grep和sed  http://www.linuxidc.com/Linux/2017-10/147269.htm

  1. $ egrep -wi --color 'warning|error|critical'/var/log/messages

2: 如果你想搜索多个文件是否包含某个字符串,可以使用下面方式

grep命令中文手册(info grep翻译)  http://www.linuxidc.com/Linux/2017-09/146645.htm

输出示例:

grep "search content" filename1 filename2.... filenamen

grep 命令系列:如何在 UNIX 中根据文件内容查找文件 http://www.linuxidc.com/Linux/2016-01/128017.htm

图片 2

grep "search content" *.sql

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148390.htm

Fig.01: Linux / Unix egrep Command Search Multiple Words Demo Output

例如我想查看当前目录下,哪些sql脚本包含视图v$temp_space_header(注意:搜索的内容如果包含特殊字符时,必须进行转义处理,如下所示)

图片 3

图一: Linux / Unix egrep 命令查找多个单词输出例子

[oracle@DB-Server admin]$ grep "v$temp_space_header" *.sql

catspacd.sql:drop public synonym v$temp_space_header;

catspacd.sql:drop public synonym gv$temp_space_header;

catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;

catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;

catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

catspace.sql:create or replace public synonym gv$temp_space_header

catspace.sql:            FROM gv$temp_space_header

[oracle@DB-Server admin]$ 

grep使用简明及正则表达式 http://www.linuxidc.com/Linux/2013-08/88534.htm

图片 4

正则表达式的用法 http://www.linuxidc.com/Linux/2013-03/81897.htm

3:如果需要显示搜索文本在文件中的行数,可以使用参数-n

正则表达式之零宽断言 http://www.linuxidc.com/Linux/2013-03/81897.htm

[oracle@DB-Server admin]$ grep  -n "v$temp_space_header" *.sql

catspacd.sql:68:drop public synonym v$temp_space_header;

catspacd.sql:71:drop public synonym gv$temp_space_header;

catspace.sql:1952:create or replace view v_$temp_space_header as select * from v$temp_space_header;

catspace.sql:1953:create or replace public synonym v$temp_space_header for v_$temp_space_header;

catspace.sql:1956:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

catspace.sql:1957:create or replace public synonym gv$temp_space_header

catspace.sql:2357:            FROM gv$temp_space_header

[oracle@DB-Server admin]$ 

Linux命令-文件文本操作grep  http://www.linuxidc.com/Linux/2015-12/126259.htm

4: 如果搜索时需要忽略大小写问题,可以使用参数-i

grep正则表达式 http://www.linuxidc.com/Linux/2015-09/123035.htm

 

[oracle@DB-Server admin]$ grep  "V$TEMP_SPACE_HEADER" *.sql

[oracle@DB-Server admin]$ grep -i "V$TEMP_SPACE_HEADER"  *.sql

catspacd.sql:drop public synonym v$temp_space_header;

catspacd.sql:drop public synonym gv$temp_space_header;

catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;

catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;

catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

catspace.sql:create or replace public synonym gv$temp_space_header

catspace.sql:            FROM gv$temp_space_header

[oracle@DB-Server admin]$ 

Linux中正则表达式与文件格式化处理命令(awk/grep/sed) http://www.linuxidc.com/Linux/2013-03/81018.htm

另外,例如检查安装的MySQL组件

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-01/127944.htm

[root@DB-Server init.d]# rpm -qa | grep -i mysql

 

MySQL-devel-5.6.23-1.linux_glibc2.5

 

MySQL-client-5.6.23-1.linux_glibc2.5

 

MySQL-server-5.6.23-1.linux_glibc2.5

图片 5

5:从文件内容查找不匹配指定字符串的行:

$ grep –v "被查找的字符串" 文件名

例如查找某些进程时,我们不想显示包含命令grep ora_mmon的进程,如下所示

[oracle@DB-Server admin]$ ps -ef  | grep ora_mmon  

oracle   16675 16220  0 00:09 pts/1    00:00:00 grep ora_mmon

oracle   21412     1  0 Aug22 ?        00:00:07 ora_mmon_gsp

[oracle@DB-Server admin]$ ps -ef  | grep ora_mmon  | grep -v grep

oracle   21412     1  0 Aug22 ?        00:00:07 ora_mmon_gsp

[oracle@DB-Server admin]$ 

本文由杏彩发布,转载请注明来源

关键词: