linux 查找 grep(grep查找指定字符)

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

Linux下find命令和grep命令查找文件

在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。

两个命令是有区的。

(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。

(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。

一.find命令

基本格式:find path expression

1.按照文件名查找

(1)find/-name httpd.conf

在根目录下查找文件httpd.conf,表示在整个硬盘查找

(2)find/etc-name httpd.conf

在/etc目录下文件httpd.conf

(3)find/etc-name' srm'

使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件

(4)find.-name'srm*'

表示当前目录下查找文件名开头是字符串‘srm’的文件

Linux下Grep命令的详细使用方法

在linux中grep命令是非常有用的,它和管道(|)配合使用,非常强大,用于搜索文本文件.如果想要在几个文本文件中查找一字符串,可以使用‘grep’命令。‘grep’在文本中搜索指定的字符串。

假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件:

$ grep magic/usr/src/linux/Documentation/*

sysrq.txt:* How do I enable the magic SysRQ key?

sysrq.txt:* How do I use the magic SysRQ key?

其中文件‘sysrp.txt’包含该字符串,讨论的是 SysRQ的功能。

默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出:

grep: sound: Is a directory

这可能会使‘grep’的输出难于阅读。这里有两种解决的办法:

明确要求搜索子目录:grep-r

或忽略子目录:grep-d skip

当然,如果预料到有许多输出,您可以通过管道将其转到‘less’上阅读:

$ grep magic/usr/src/linux/Documentation/*| less

这样,您就可以更方便地阅读。

有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用*)。如果您忘了,‘grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按,然后再试。

下面是一些有意思的命令行参数:

grep-i pattern files:不区分大小写地搜索。默认情况区分大小写,

grep-l pattern files:只列出匹配的文件名,

grep-L pattern files:列出不匹配的文件名,

grep-w pattern files:只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

grep-C number pattern files:匹配的上下文分别显示[number]行,

grep pattern1| pattern2 files:显示匹配 pattern1或 pattern2的行,

grep pattern1 files| grep pattern2:显示既匹配 pattern1又匹配 pattern2的行。

这里还有些用于搜索的特殊符号:

\分别标注单词的开始与结尾。

例如:

grep man*会匹配‘Batman’、‘manic’、‘man’等,

grep'\grep'\'只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。

'^':指匹配的字符串在行首,

'$':指匹配的字符串在行尾,

如果您不习惯命令行参数,可以试试图形界面的‘grep’,如 reXgrep。这个软件提供 AND、OR、NOT等语法,还有漂亮的按钮:-)。如果您只是需要更清楚的输出,不妨试试 fungrep。

Linux-grep,查找文件里面内容

搜索、查找文件内容最常用命令是grep。egrep,vi命令也可实现文件内容搜索。

1:搜索特定文件包含特定字符串

使用命令:grep"search content" filename1

示例:grep ORA utlspadv.sql查找utlspadv.sql文件中包含ORA的字符内容

$ grep"ORA" utlspadv.sql

若需过滤特定内容,可修改搜索内容。

2:搜索多个文件中包含特定字符串

使用命令:grep"search content" filename1 filename2.... filenamen

示例:grep"search content"*.sql查看当前目录下所有.sql文件中包含特定内容

$ grep"v\$temp_space_header"*.sql查找包含v\$temp_space_header的.sql文件

3:显示搜索文本在文件中的行数

使用命令:grep-n"search content" filename

示例:$ grep-n"v\$temp_space_header"*.sql查看包含v\$temp_space_header的行数

4:忽略大小写搜索

使用命令:grep-i"search content" filename

示例:[oracle@DB-Server admin]$ grep-i"V\$TEMP_SPACE_HEADER"*.sql查找大写搜索内容的文件

5:检查安装的MySQL组件

使用命令:rpm-qa| grep-i mysql查看已安装的MySQL组件

6:查找不匹配指定字符串的行

使用命令:grep–v"被查找的字符串"文件名

示例:查找不包含命令grep ora_mmon的进程

[oracle@DB-Server admin]$ ps-ef| grep ora_mmon| grep-v grep

7:搜索匹配的行数

使用命令:grep-c"被查找的字符串"文件名

示例:查找特定字符串在文件中的行数

8:递归搜索目录及其子目录下所有文件

使用命令:grep-r"被查找的字符串"/目录

示例:搜索特定字符串在/u01目录下的所有文件

9:获取包含搜索内容的文件

使用命令:grep-H-r"被查找的字符串"/目录| cut-d:-f1

示例:获取/u01目录下包含特定字符串的文件

10:获取完整匹配搜索字符的内容

使用命令:grep-w"被查找的字符串"文件名

对比两种搜索方式的差异。

11:结合find命令搜索

使用命令:find.-name'*.sql'-exec grep-i'v\$temp_space_header'{}\;-print

示例:在当前目录下查找所有.sql文件中包含v\$temp_space_header的内容

12:vi命令也可用于文件内容搜索,但功能不如grep强大。

阅读剩余
THE END