zoukankan      html  css  js  c++  java
  • Linux如何搜索查找文件里面内容

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

    eg:搜索、查找utlspadv.sql文件中包含ORA的字符内容

    [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]$ 

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

    [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]$ 

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

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

    grep "search content" *.sql

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

    [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]$ 

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

    [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]$ 

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

    [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]$ 

    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]$ 

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

    $ grep -c "被查找的字符串" 文件名

    [oracle@DB-Server admin]$ 
    [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 -c  "v\$temp_space_header"  catspacd.sql
    2
    [oracle@DB-Server admin]$ grep -c  "v\$temp_space_header"  catspace.sql
    5
    [oracle@DB-Server admin]$ 

    7:有些场景,我们并不知道文件类型、或那些文件包含有我们需要搜索的字符串,那么可以递归搜索某个目录以及子目录下的所有文件

    grep -r 关键字 查找的目录

    oracle@DB-Server ~]$ grep -r "v\$temp_space_header" ./

    8:如果我们只想获取那些文件包含搜索的内容,那么可以使用下命令

    [oracle@DB-Server ~]$ grep -H -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1
    
    /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
    
    /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
    
    /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
    
    /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
    
    /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
    
    /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql
    
    /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql
    
    [oracle@DB-Server ~]$ grep -H -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1 | uniq
    
    /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql
    
    /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql
    
    [oracle@DB-Server ~]$

    9:如果只想获取和整个搜索字符匹配的内容,那么可以使用参数w

    [oracle@DB-Server admin]$ grep -w "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]$ 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]$ 

    10: grep命令结合find命令搜索

    find ./ -name ‘.’ | xargs grep “hello”
    [oracle@DB-Server admin]$ find . -name '*.sql' -exec grep -i 'v\$temp_space_header' {} \; -print
    create or replace view v_$temp_space_header as select * from v$temp_space_header;
    create or replace public synonym v$temp_space_header for v_$temp_space_header;
    create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
    create or replace public synonym gv$temp_space_header
                FROM gv$temp_space_header
    ./catspace.sql
    drop public synonym v$temp_space_header;
    drop public synonym gv$temp_space_header;
    ./catspacd.sql
    [oracle@DB-Server admin]$ 
    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    使用 ASP.NET Core MVC 创建 Web API(五)
    使用 ASP.NET Core MVC 创建 Web API(四)
    使用 ASP.NET Core MVC 创建 Web API(三)
    使用 ASP.NET Core MVC 创建 Web API(二)
    使用 ASP.NET Core MVC 创建 Web API(一)
    学习ASP.NET Core Razor 编程系列十九——分页
    学习ASP.NET Core Razor 编程系列十八——并发解决方案
    一个屌丝程序猿的人生(九十八)
    一个屌丝程序猿的人生(九十七)
    一个屌丝程序猿的人生(九十五)
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/15684261.html
Copyright © 2011-2022 走看看