linux搜索文本内容?linux查看文本内容的命令

本篇文章给大家谈谈linux搜索文本内容,以及linux查看文本内容的命令对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

Linux如何对文件内容中的关键字进行查找

1、首先我们准备一个要查找的文件,如下图所示。

2、接下来点击顶部的搜索菜单,然后选择查找选项,如下图所示。

3、然后在右上角的输入框中输入查找内容,就可以查找出匹配的的内容了。

4、另外我们还可以利用命令行查找,如下图所示,打开命令行。

5、输入grep命令,后面跟上要搜索的内容,然后加上文件名,如下图所示。

6、最后系统就会列举出匹配的内容项了,如下图所示。

linux使用shell搜索查找文本的几种方法分享

linux下,日常开发的时候免不了查看开发的应用的日志,但只要是系统上线,就不像原来那样在本地调试的那么简单了日志的大小很大,服务器一般也是Linux、HP、AIX等,每次都下载回来就麻烦的要命,在开源中国看到下面内容,很实用。

1.使用find和xargs命令

复制代码代码如下:

find dir| xargs grep str# dir是指某个目录

find file| xargs grep str# file是指某个文件2.

第2种方法是直接使用grep命令

复制代码代码如下:

grep str dir/*# dir是指某个目录,但不递归搜索其子目录

grep-r str dir/*#使用-r选项,递归搜索其子目录

grep str file#file是指某个文件

3.第3种方法是综合以上两种

复制代码代码如下:

#!/bin/bash

#find_str.sh

if [$#-lt"2" ]; then

echo"Usage: `basename$0` path name [option]"

exit 1

fi

#!-r表示递归处理子目录,-i表示忽略大小写

path=$1

name=$2

shift

shift

for option in"$@"

do

case$option in

-r) dir_op="-r"

;;

-i) lu_op="-i"

;;

*) if [-n"$option" ]; then

echo"invalid option"

exit 1

fi

;;

esac

done

grep_str_of_file()

{

file=$1

str=$2

out=$(grep-n$lu_op"$str""$file")

if [-n"$out"-a"$file"!="$0" ]; then

echo"$file:$out"

fi

}

find_str()

{

if [-d"$1" ]; then

for file in$1/*

do

if ["$dir_op"="-r"-a-d"$file" ]; then

find_str$file$2

elif [-f"$file" ]; then

grep_str_of_file$file$2

fi

done

elif [-f"$1" ]; then

grep_str_of_file$1$2

fi

}

使用方法

复制代码代码如下:

$ find_str$path$name

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

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

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|<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命令搜索

[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命令功能那么方便、强大。

阅读剩余
THE END