Linux如何搜索查找文件里面内容「建议收藏」

您所在的位置:网站首页 四有优秀士兵有什么奖励湖南省衡东县 Linux如何搜索查找文件里面内容「建议收藏」

Linux如何搜索查找文件里面内容「建议收藏」

2023-03-18 09:12| 来源: 网络整理| 查看: 265

Linux如何搜索查找文件里面内容「建议收藏」 思创斯忠实用户-ss • 2023年3月17日 16:00 • 未分类

Linux如何搜索查找文件里面内容「建议收藏」在Linux系统当中,如何搜、索查找文件里面的内容呢?这个应该是系统维护、管理当中遇到最常见的需求。那么下面介绍,总结一下如何搜索、查找文件当中的内容。搜索、查找文件当中的内容,一般最常用的是grep命令,另外还有egrep,vi命令也能搜索文件里面内容1:搜索某个文件里面是否包含字符串,使用grep”searchcontent”filename1,例如$grepORAalert_gsp.log$grep”ORA”alert_gsp.log例如我们需要搜索、…

大家好,我是你的好朋友思创斯。今天说一说Linux如何搜索查找文件里面内容「建议收藏」,希望您对编程的造诣更进一步.

在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" *.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]$

clip_image002

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

另外,例如检查安装的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_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]$

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:如果我们只想获取那些文件包含搜索的内容,那么可以使用下命令

  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' {} \; -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]$

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

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

参考资料:

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

Linux如何搜索查找文件里面内容 – 潇湘隐者 – 博客园 (cnblogs.com)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由思创斯整理,转载请注明出处:https://ispacesoft.com/106462.html

赞 (0) 思创斯忠实用户-ss思创斯忠实用户-ss 0 0 生成海报


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3