Linux如何搜索查找文件里面内容

您所在的位置:网站首页 linux在文件中查找指定内容 Linux如何搜索查找文件里面内容

Linux如何搜索查找文件里面内容

2024-07-01 22:05:31| 来源: 网络整理| 查看: 265

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

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

 

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

 

$ grep ORA alert_gsp.log

$ grep "ORA" alert_gsp.log

 

例如我们需要搜索、查找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 | =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""  -- | DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM=> 100% 0% 0% "" | ...  -- =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" | ...  -- | CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00  -- | 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]$

clip_image001

 

 

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" *.sqlcatspacd.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_headercatspace.sql:            FROM gv$temp_space_header[oracle@DB-Server admin]$

 

clip_image002

 

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

[oracle@DB-Server admin]$ grep  -n "v\$temp_space_header" *.sqlcatspacd.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_headercatspace.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"  *.sqlcatspacd.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_headercatspace.sql:            FROM gv$temp_space_header[oracle@DB-Server admin]$

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

[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:从文件内容查找不匹配指定字符串的行:

 

$ 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_mmonoracle   21412     1  0 Aug22 ?        00:00:07 ora_mmon_gsp[oracle@DB-Server admin]$ ps -ef  | grep ora_mmon  | grep -v greporacle   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" *.sqlcatspacd.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_headercatspace.sql:            FROM gv$temp_space_header[oracle@DB-Server admin]$ grep -c  "v\$temp_space_header"  catspacd.sql2[oracle@DB-Server admin]$ grep -c  "v\$temp_space_header"  catspace.sql5[oracle@DB-Server admin]$

clip_image003

 

 

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

 

[oracle@DB-Server ~]$ grep -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym gv$temp_space_header

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql: FROM gv$temp_space_header

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym v$temp_space_header;

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym gv$temp_space_header;

[oracle@DB-Server ~]$

 

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 | =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""  -- | DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM=> 100% 0% 0% "" | ...  -- =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" | ...  -- | CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00  -- | 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命令搜索

[oracle@DB-Server admin]$ find . -name '*.sql' -exec grep -i 'v\$temp_space_header' {} \; -printcreate 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.sqldrop public synonym v$temp_space_header;drop public synonym gv$temp_space_header;./catspacd.sql[oracle@DB-Server admin]$

 

 

11: egrep -w -R 'word1|word2' ~/klbtmp

 

12: vi命令其实也能搜索文件里面的内容,只不过没有grep命令功能那么方便、强大。

 

参考资料:

http://www.cyberciti.biz/faq/howto-search-find-file-for-text-string/

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭