linux 查找文件内容命令

linux 查找文件内容命令,第1张

Linux查找文件内容的常用命令方法。

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

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

例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件

grep "thermcontact" */*.in

从文件内容查找与正则表达式匹配的行:

$ grep –e “正则表达式” 文件名

查找时不区分大小写:

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

查找匹配的行数:

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

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

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

学习更多linux知识《Linux就该这么学》,从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行

find / -type f -name "*.log" | xargs grep "ERROR"

例子:从当前目录开始查找所有扩展名为.in的文本文件,并找出包含”thermcontact”的行

find . -name "*.in" | xargs grep "thermcontact"

搜索、查找文件当中的内容,一般最常用的是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命令功能那么方便、强大。

linux下vim查找命令:

/text--查找text,按n查找下一个,N查找上一个

?text--查找text(反向查找),按n查找下一个,N查找上一个

*/#--查找光标当前的单词,相当于/text

:setignorecase--查找忽略大小写

:setnoignorecase--查找不忽略大小写

:nohlsearch--关闭当前的高亮显示,当再次查找时恢复高亮

:setincsearch--逐步搜索模式,对当前键入的字符进行查找,不必等输入完成

:setwrapscan--重新搜索,当搜索到文件头或尾时,返回重新搜索

扩展资料:

1、文件窗口:

:openfile--在当前窗口打开新文件

:splitfile--在新窗口打开文件

:newfile--用新窗口打开文件,同:splitfile

:bn--切换到下一个文件

:bp--切换到上一个文件

:args--查看当前打开的文件列表(当前正在编辑的文件会用[]括起来)

:eftp://192.168.10.76/abc.txt

:e\qadriveest.txt--打开远程文件

:split--打开一个新窗口,光标停在顶层的窗口上

:new--打开一个新窗口,光标停在顶层的窗口上

:vsplit--横向打开窗口。

Ctrl+ww--移动到下一个窗口

Ctrl+wj--移动到下方的窗口

Ctrl+wk--移动到上方的窗口

2、其他命令:

Esc/Ctrl+[--键入命令

:!command--执行shell命令

:suspend/Ctrl+Z--挂起vim,回到shell,fg返回vim

:!perl-cscript.pl--检查perl脚本语法,不用退出vim

:!perlscript.pl--执行perl脚本,不用退出vim

:help--显示帮助文档

:helpi--显示i的帮助文档(:特殊键用<>,-t:启动参数用-)

3、编辑命令:

插入:

i--在当前位置插入

A--在当前行尾插入

I--在当前行首插入

o--在当前行后插入一行

O--在当前行前插入一行

拷贝粘贴剪切:

yy--拷贝当前行

2yy--拷贝当前行开始的2行

p--在当前光标后粘贴

P--在当前行前粘贴

:1,10co20--将1-10行插入到第20行之后。

:1,$co$--将整个文件复制一份并添加到文件尾部

v--进入选择模式,相当于在Windows下按住Shift选择

V--进入选择模式,整行选择

ddp--交换当前行和其下一行

2dd--剪切当前行之后的2行

:1,10d--将1-10行剪切

:1,10m20--将第1-10行移动到第20行之后

替换:

ra--将当前光标所在字符替换为a

s/old/new/--用old替换new,替换当前行的第一个匹配

s/old/new/g--用old替换new,替换当前行的所有匹配

%s/old/new/--用old替换new,替换所有行的第一个匹配

%s/old/new/g--用old替换new,替换所有匹配

:10,20s/^/text/g--在第10行到第20行每行前面加上text(:3,5s/^/#/g--注释3-5行,:3,5s/^#//g

--解除3-5行的注释,:1,$s/^/#/g--注释整个文档,:%s/^/#/g--注释整个文档)

ddp--交换光标所在行和下一行

移动:

h--左移一个字符(5h--左移5个字符)

l--右移一个字符(5l--右移5个字符)

k--上移一个字符(5k--上移5个字符)

j--下移一个字符(5j--下移5个字符)

w--向后移动一个单词(5w--向后移动5个单词)

b--向前移动一个单词(5b--向前移动5个单词)

e--同w,光标停在单词尾部

ge--同e,光标停在单词尾部

^--移动到本行第一个非空白字符

0--移动到本行第0个字符

--同0

$--移动到行尾(3$--移动到下面3行的行尾)

gg--移动到文件头(10gg--移动到第10行首)

[[--同gg

G--移动到文件尾(10G--移动到第10行尾)

]]--同G

fx--移动到本行光标后第一个为x的字符(3fx--移动到本行光标后第3个为x的字符)

Fx--同fx,反向查找

:20--跳到20行行首

Ctrl+e--向下滚动一行

Ctrl+y--向上滚动一行

Ctrl+d--向下滚动半屏

Ctrl+u--向上滚动半屏

Ctrl+f--向下滚动一屏

Ctrl+b--向上滚动一屏

撤销:

u--撤销

U--撤销对整行的 *** 作

Ctrl+r--撤销刚才的撤销

删除:

x--删除当前字符(3x--删除当前光标开始向后三个字符)

X--删除当前字符的前一个字符,同dh

dl--删除当前字符,同x

dh--删除前一个字符

dd--删除当前行

dj--删除上一行

dk--删除下一行

10d--删除当前行开始的10行。

D--删除当前字符至行尾,同d$

kdgg--删除当前行之前所有行(不包括当前行)

:1,10d--删除1-10行

:11,$d--删除11行及以后所有的行

:1,$d--删除所有行

J--删除两行之间的空行,合并两行

退出

:wq--保存并退出

ZZ--保存并退出

:q!--强制退出并忽略所有更改

:e!--放弃所有修改,并打开原来文件

:close--关闭窗口,最后一个窗口不能使用此命令,可以防止意外退出vim

:q--如果是最后一个被关闭的窗口,那么将退出vim


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8505409.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存