2024年10月linux系统中grep命令(linux grep命令详解)
⑴linux系统中grep命令(linuxgrep命令详解
⑵linuxgrep命令详解
⑶简介grep(globalsearchregularexpression(RE)andprintouttheline,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符,fgrep就是fixedgrep或fastgrep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。grep常用用法’搜寻字符串’filename选项与参数:-a:将binary文件以text文件的方式搜寻数据-c:计算找到’搜寻字符串’的次数-i:忽略大小写的不同,所以大小写视为相同-n:顺便输出行号-v:反向选择,亦即显示出没有’搜寻字符串’内容的那一行!--color=auto:可以将找到的关键词部分加上颜色的显示喔!?将/etc/passwd,有出现root的行取出来#greproot/etc/passwdroot:x:::root:/root:/bin/bashoperator:x:::operator:/root:/sbin/nologin或#cat/etc/passwd|greprootroot:x:::root:/root:/bin/bashoperator:x:::operator:/root:/sbin/nologin将/etc/passwd,有出现root的行取出来,同时显示这些行在/etc/passwd的行号#grep-nroot/etc/passwd:root:x:::root:/root:/bin/bash:operator:x:::operator:/root:/sbin/nologin?在关键字的显示方面,grep可以使用--color=auto来将关键字部分使用颜色显示。这可是个很不错的功能啊!但是如果每次使用grep都得要自行加上--color=auto又显的很麻烦~此时那个好用的alias就得来处理一下啦!你可以在~/.bashrc内加上这行:『aliasgrep=’grep--color=auto’』再以『source~/.bashrc』来立即生效即可喔!这样每次运行grep他都会自动帮你加上颜色显示啦将/etc/passwd,将没有出现root的行取出来#grep-vroot/etc/passwdroot:x:::root:/root:/bin/bashoperator:x:::operator:/root:/sbin/nologin将/etc/passwd,将没有出现root和nologin的行取出来#grep-vroot/etc/passwd|grep-vnologinroot:x:::root:/root:/bin/bashoperator:x:::operator:/root:/sbin/nologin用dmesg列出核心信息,再以grep找出内含eth那行,要将捉到的关键字显色,且加上行号来表示:#dmesg|grep-n--color=auto’eth’:eth:RealTekRTLatxee,:::a::,IRQ:eth:Identifiedchiptype’RTL-C’:eth:linkup,Mbps,full-duplex,lpaxCE:eth:noIPvrouterspresent#你会发现除了eth会有特殊颜色来表示之外,最前面还有行号喔!在关键字的显示方面,grep可以使用--color=auto来将关键字部分使用颜色显示。这可是个很不错的功能啊!但是如果每次使用grep都得要自行加上--color=auto又显的很麻烦~此时那个好用的alias就得来处理一下啦!你可以在~/.bashrc内加上这行:『aliasgrep=’grep--color=auto’』再以『source~/.bashrc』来立即生效即可喔!这样每次运行grep他都会自动帮你加上颜色显示啦用dmesg列出核心信息,再以grep找出内含eth那行,在关键字所在行的前两行与后三行也一起捉出来显示...-hdb:ATAPIXDVD-ROMDVD-R-RAMCD-R/RWdrive,kBCache,UDMA()#如上所示,你会发现关键字所在的前两行及后三行也都被显示出来!#这样可以让你将关键字前后数据捉出来进行分析啦!根据文件内容递归查找目录#grep‘energywise’*?????#在当前目录搜索带’energywise’行的文件#grep-r‘energywise’*????#在当前目录及其子目录下搜索’energywise’行的文件#grep-l-r‘energywise’*??#在当前目录及其子目录下搜索’energywise’行的文件,但是不显示匹配的行,只显示匹配的文件这几个命令很使用,是查找文件的利器。grep与正规表达式?字符类字符类的搜索:如果我想要搜寻test或taste这两个单字时,可以发现到,其实她们有共通的’t?st’存在~这个时候,我可以这样来搜寻:st’regular_express.txt:Ican’tfinishthetest.:Oh!Thesouptastegood.其实里面不论有几个字节,他都谨代表某『一个』字节,所以,上面的例子说明了,我需要的字串是『tast』或『test』两个字串而已!字符类的反向选择:如果想要搜索到有oo的行,但不想要oo前面有g,如下oo’regular_express.txt:appleismyfavoritefood.:Footballgameisnotusefeetonly.:googleisthebesttoolsforsearchkeyword.:goooooogleyes!第,行没有疑问,因为foo与Foo均可被接受!但是第行明明有google的goo啊~别忘记了,因为该行后面出现了tool的too啊!所以该行也被列出来~也就是说,行里面虽然出现了我们所不要的项目(goo)但是由於有需要的项目(too),因此,是符合字串搜寻的喔!至於第行,同样的,因为goooooogle里面的oo前面可能是o,例如:go(ooo)oogle,所以,这一行也是符合需求的!字符类的连续:再来,假设我oo前面不想要有小写字节,所以,我可以这样写oo,但是这样似乎不怎么方便,由於小写字节的ASCII上编码的顺序是连续的,因此,我们可以将之简化为底下这样:oo’regular_express.txt:Footballgameisnotusefeetonly.也就是说,当我们在一组集合字节中,如果该字节组是连续的,例如大写英文/小写英文/数字等等,就可以使用。我们要取得有数字的那一行,就这样:’regular_express.txt:However,thisdressisabout$dollars.:Youarethebestismeanyouaretheno..行首与行尾字节^$行首字符:如果我想要让the只在行首列出呢?这个时候就得要使用定位字节了!我们可以这样做:#grep-n’^the’regular_express.txt:thesymbol’*’isrepresentedasstart.此时,就只剩下第行,因为只有第行的行首是the开头啊~此外,如果我想要开头是小写字节的那一行就列出呢?可以这样:’regular_express.txt:appleismyfavoritefood.:thisdressdoesn’tfitme.:motorcycleischeapthancar.:thesymbol’*’isrepresentedasstart.:googleisthebesttoolsforsearchkeyword.:goooooogleyes!:go!go!Let’sgo.如果我不想要开头是英文字母,则可以是这样:’regular_express.txt:“OpenSource“isagoodmechanismtodevelopprograms.:#IamVBird^符号,在字符类符号(括号之外则代表定位在行首的意义!那如果我想要找出来,行尾结束为小数点(.)的那一行:#grep-n’.$’regular_express.txt:“OpenSource“isagoodmechanismtodevelopprograms.:appleismyfavoritefood.:Footballgameisnotusefeetonly.:thisdressdoesn’tfitme.:motorcycleischeapthancar.:Thiswindowisclear.:thesymbol’*’isrepresentedasstart.:Youarethebestismeanyouaretheno..:Theworldisthesamewith“glad“.:Ilikedog.:googleisthebesttoolsforsearchkeyword.:go!go!Let’sgo.特别注意到,因为小数点具有其他意义(底下会介绍),所以必须要使用转义字符()来加以解除其特殊意义!找出空白行:#grep-n’^$’regular_express.txt:因为只有行首跟行尾(^$),所以,这样就可以找出空白行啦!任意一个字节.与重复字节*这两个符号在正则表达式的意义如下:.(小数点):代表『一定有一个任意字节』的意思;*(星号):代表『重复前一个字符,到无穷多次』的意思,为组合形态假设我需要找出g??d的字串,亦即共有四个字节,起头是g而结束是d,我可以这样做:#grep-n’g..d’regular_express.txt:“OpenSource“isagoodmechanismtodevelopprograms.:Oh!Thesouptastegood.:Theworldisthesamewith“glad“.因为强调g与d之间一定要存在两个字节,因此,第行的god与第行的gd就不会被列出来啦!如果我想要列出有oo,ooo,oooo等等的数据,也就是说,至少要有两个(含)o以上,该如何是好?因为*代表的是『重复个或多个前面的RE字符』的意义,因此,『o*』代表的是:『拥有空字节或一个o以上的字节』,因此,『grep-n’o*’regular_express.txt』将会把所有的数据都列印出来终端上!当我们需要『至少两个o以上的字串』时,就需要ooo*,亦即是:#grep-n’ooo*’regular_express.txt:“OpenSource“isagoodmechanismtodevelopprograms.:appleismyfavoritefood.:Footballgameisnotusefeetonly.:Oh!Thesouptastegood.:googleisthebesttoolsforsearchkeyword.:goooooogleyes!如果我想要字串开头与结尾都是g,但是两个g之间仅能存在至少一个o,亦即是gog,goog,gooog....等等,那该如何?#grep-n’goo*g’regular_express.txt:googleisthebesttoolsforsearchkeyword.:goooooogleyes!如果我想要找出g开头与g结尾的行,当中的字符可有可无#grep-n’g.*g’regular_express.txt:“OpenSource“isagoodmechanismtodevelopprograms.:Thegdsoftwareisalibraryfordraftingprograms.:googleisthebesttoolsforsearchkeyword.:goooooogleyes!:go!go!Let’sgo.因为是代表g开头与g结尾,中间任意字节均可接受,所以,第,,行是可接受的喔!这个.*的RE表示任意字符是很常见的.如果我想要找出『任意数字』的行?因为仅有数字,所以就成为:*’regular_express.txt:However,thisdressisabout$dollars.:Youarethebestismeanyouaretheno..限定连续RE字符范围{}我们可以利用.与RE字符及*来配置个到无限多个重复字节,那如果我想要限制一个范围区间内的重复字节数呢?举例来说,我想要找出两个到五个o的连续字串,该如何作?这时候就得要使用到限定范围的字符{}了。但因为{与}的符号在shell是有特殊意义的,因此,我们必须要使用字符?来让他失去特殊意义才行。至於{}的语法是这样的,假设我要找到两个o的字串,可以是:#grep-n’o{}’regular_express.txt:“OpenSource“isagoodmechanismtodevelopprograms.:appleismyfavoritefood.:Footballgameisnotusefeetonly.:Oh!Thesouptastegood.:googleisthebesttoolsforsearchke:goooooogleyes!假设我们要找出g后面接到个o,然后再接一个g的字串,他会是这样:#grep-n’go{,}g’regular_express.txt:googleisthebesttoolsforsearchkeyword.如果我想要的是个o以上的goooo....g呢?除了可以是gooo*g,也可以是:#grep-n’go{,}g’regular_express.txt:googleisthebesttoolsforsearchkeyword.:goooooogleyes!扩展grep(grep-E或者egrep):使用扩展grep的主要好处是增加了额外的正则表达式元字符集。打印所有包含NW或EA的行。如果不是使用egrep,而是grep,将不会有结果查出。#egrep’NW|EA’testfile????northwest???NW???CharlesMain????..??eastern????EA???TBSavage?????..对于标准grep,如果在扩展元字符前面加,grep会自动启用扩展选项-E。#grep’NW|EA’testfilenorthwest???NW???CharlesMain????..eastern????EA???TBSavage?????..搜索所有包含一个或多个的行。#egrep’+’testfile#grep-E’+’testfile#grep’+’testfile????#这条命令将会northwest???NW???CharlesMain?????..western????WE???SharonGray?????..northeast???NE???AMMainJr.?????..central????CT???AnnStephens?????..搜索所有包含个或个小数点字符的行。#egrep’.?’testfile#grep-E’.?’testfile#grep’.?’testfile#首先含有字符,其后紧跟着个或个点,后面再是和之间的数字。western????WE???SharonGray?????..southwest???SW???LewisDalsass????..eastern????EA???TBSavage??????..搜索一个或者多个连续的no的行。#egrep’(no)+’testfile#grep-E’(no)+’testfile#grep’(no)+’testfile?#个命令返回相同结果,northwest???NW???CharlesMain????..northeast???NE???AMMainJr.????..north?????NO???MargotWeber????..不使用正则表达式fgrep查询速度比grep命令快,但是不够灵活:它只能找固定的文本,而不是规则表达式。如果你想在一个文件或者输出中找到包含星号字符的行fgrep?’*’/etc/profileforiin/etc/profile.d/*.sh;do或grep-F’*’/etc/profileforiin/etc/profile.d/*.sh;do
⑷Linux命令grep(文档编辑-想玩转linux就请一直看下去
⑸Linuxgrep命令用于查找文件里符合条件的字符串。
⑹grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为-,则grep指令会从标准输入设备读取数据。
⑺在当前目录中,查找后缀有file字样的文件中包含test字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
⑻以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi及其子目录(如果存在子目录的话下所有文件中包含字符串“update“的文件,并打印出该字符串所在行的内容,使用的命令为:
⑼反向查找。前面各个例子是查找并打印出符合条件的行,通过“-v“参数可以打印出不符合条件行的内容。
⑽查找文件名中包含test的文件中不包含test的行,此时,使用的命令为:
⑾linux中“grep”和“find”的区别是什么
⑿这是两个不同的命令,关于grep:
⒀Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是GlobalRegularExpressionPrint,表示全局正则表达式版本,它的使用权限是所有用户。
⒁而linux下的find
⒂功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。
⒃语法:find起始目录寻找条件操作
⒄说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。
⒅所以简单点说说,grep是查找匹配条件的行,find是搜索匹配条件的文件。
⒆Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持位和位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
⒇Linux操作系统诞生于年月日(这是第一次正式向外公布时间。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
⒈严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
⒉linux命令grep
⒊grep搜索成功,则返回,如果搜索不成功,则返回,如果搜索的文件不存在,则返回。-n打印行号??grep-n“.*“h.txt????所有打印行号??grep-n“root“h.txt??匹配的内容显示行号-v不包括-E?表示过滤多个参数??grep-Ev“sshd|work|crond|sysstat|“?-o:仅打印你需要的东西,默认打印正行??grep-o“hello“h.txt-i:忽略大小写??grep-i“hello“h.txt-c:用于统计文中出现的次数--color=auto过滤字段添加颜色b:作为边界符,边界只包含特定字符的行grep“boldboyb“/etc/passwd--》只过滤包含oldboy的行从多个文件中查找关键词grep?“omc“?/etc/passwd?/etc/shadow数据去重:catlog|sort|uniq
⒋Linux下Grep命令的详细使用方法
⒌在linux中grep命令是非常有用的,它和管道(|)配合使用,非常强大,用于搜索文本文件.如果想要在几个文本文件中查找一字符串,可以使用‘grep’命令。‘grep’在文本中搜索指定的字符串。假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件:$grepmagic/usr/src/linux/Documentation/*sysrq.txt:*HowdoIenablethemagicSysRQkey?sysrq.txt:*HowdoIusethemagicSysRQkey?其中文件‘sysrp.txt’包含该字符串,讨论的是SysRQ的功能。默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出:grep:sound:Isadirectory这可能会使‘grep’的输出难于阅读。这里有两种解决的办法:明确要求搜索子目录:grep-r或忽略子目录:grep-dskip当然,如果预料到有许多输出,您可以通过管道将其转到‘less’上阅读:$grepmagic/usr/src/linux/Documentation/*|less这样,您就可以更方便地阅读。有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用*。如果您忘了,‘grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按,然后再试。下面是一些有意思的命令行参数:grep-ipatternfiles:不区分大小写地搜索。默认情况区分大小写,grep-lpatternfiles:只列出匹配的文件名,grep-Lpatternfiles:列出不匹配的文件名,grep-wpatternfiles:只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’,grep-umberpatternfiles:匹配的上下文分别显示行,greppattern|patternfiles:显示匹配pattern或pattern的行,greppatternfiles|greppattern:显示既匹配pattern又匹配pattern的行。这里还有些用于搜索的特殊符号:《和》分别标注单词的开始与结尾。例如:grepman*会匹配‘Batman’、‘manic’、‘man’等,grep’grep’’只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。’^’:指匹配的字符串在行首,’$’:指匹配的字符串在行尾,如果您不习惯命令行参数,可以试试图形界面的‘grep’,如reXgrep。这个软件提供AND、OR、NOT等语法,还有漂亮的按钮:-)。如果您只是需要更清楚的输出,不妨试试fungrep。
⒍Linux中使用grep命令,查询多个字符串
⒎grep搜索同时满足多个关键字和满足任意关键字、grep-E“word|word|word“file.txt满足任意条件(word、word和word之一将匹配。这样也可以egrep’word|word|word’文件名grep’word/|word|word’文件名错误的:grep’word|word|word’、grepwordfile.txt|grepword|grepword必须同时满足三个条件(word、word和word才匹配。为什么需要加-E
⒏Linux系统中grep命令如何使用常用参数有哪些
⒐进行Linux系统维护的时候,想要在文本中快速搜索到你需要的东西,grep命令是非常不错的选择,它主要用于查找文件里符合条件的字符串,从而节省时间、提高工作效率。那么Linux系统中grep命令如何使用?我们一起来看看详细的内容介绍。Linuxgrep命令用于查找文件里符合条件的字符串。grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为-,则grep指令会从标准输入设备读取数据。语法grep参数-a或--text:不要忽略二进制的数据。-A《显示行数》或--after-context=《显示行数》:除了显示符合范本样式的那一列之外,并显示该行之后的内容。-b或--byte-offset:在显示符合样式的那一行之前,标示出该行第一个字符的编号。-B《显示行数》或--before-context=《显示行数》:除了显示符合样式的那一行之外,并显示该行之前的内容。-c或--count:计算符合样式的列数。-C《显示行数》或--context=《显示行数》或-《显示行数》:除了显示符合样式的那一行之外,并显示该行之前后的内容。-d《动作》或--directories=《动作》:当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。-e《范本样式》或--regexp=《范本样式》:指定字符串做为查找文件内容的样式。-E或--extended-regexp:将样式为延伸的正则表达式来使用。-f《规则文件》或--file=《规则文件》:指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。-F或--fixed-regexp:将样式视为固定字符串的列表。-G或--basic-regexp:将样式视为普通的表示法来使用。-h或--no-filename:在显示符合样式的那一行之前,不标示该行所属的文件名称。-H或--with-filename:在显示符合样式的那一行之前,表示该行所属的文件名称。………………参数较多,就不为大家一一讲解了!
⒑Linux里面grep-v命令作用是什么
⒒grep命令grep.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是GlobalRegularExpressionPrint,表示全局正则表达式版本,它的使用权限是所有用户。grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符,fgrep就是fixedgrep或fastgrep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。.格式及主要参数grep主要参数:grep--help可查看-c:只输出匹配行的计数。-i:不区分大小写。-h:查询多文件时不显示文件名。-l:查询多文件时只输出包含匹配字符的文件名。-n:显示匹配行及行号。-s:不显示不存在或无匹配文本的错误信息。-v:显示不包含匹配文本的所有行。--color=auto:可以将找到的关键词部分加上颜色的显示。pattern正则表达式主要参数::忽略正则表达式中特殊字符的原有含义。^:匹配正则表达式的开始行。$:匹配正则表达式的结束行。《:从匹配正则表达式的行开始。》:到匹配正则表达式的行结束。即A符合要求。,即A、B、C一直到Z都符合要求。.:所有的单个字符。*:所有字符,长度可以为。.grep命令使用简单实例itcast$grep‘test’d*显示所有以d开头的文件中包含test的行itcast$grep‘test’aabb显示在aa,bb,文件中匹配test的行。itcast$grep‘{}’aa显示所有包含每个字符串至少有个连续小写字符的字符串的行。itcast$grep‘wesest.*′aa如果west被匹配,则es就被存储到内存中,并标记为,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(),找到就显示该行。如果用egrep或grep-E,就不用””号进行转义,直接写成’w(es)t.*′就可以了。.grep命令使用复杂实例明确要求搜索子目录:grep-r或忽略子目录grep-dskip如果有很多输出时,您可以通过管道将其转到’less’上阅读:itcast$grepmagic/usr/src/Linux/Documentation/*|less这样,您就可以更方便地阅读。有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用*)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按,然后再试。下面还有一些有意思的命令行参数:grep-ipatternfiles:不区分大小写地搜索。默认情况区分大小写,grep-lpatternfiles:只列出匹配的文件名,grep-Lpatternfiles:列出不匹配的文件名,grep-wpatternfiles:只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),grep-umberpatternfiles:匹配的上下文分别显示行,greppattern|patternfiles:显示匹配pattern或pattern的行,例如:grep“abc|xyz“testfile表示过滤包含abc或xyz的行greppatternfiles|greppattern:显示既匹配pattern又匹配pattern的行。grep-npatternfiles即可显示行号信息grep-cpatternfiles即可查找总行数还有些用于搜索的特殊符号:《和》分别标注单词的开始与结尾。例如:grepman*会匹配‘Batman’、’manic’、’man’等,grep‘《man’*匹配’manic’和’man’,但不是’Batman’,grep‘《man》’只匹配’man’,而不是’Batman’或’manic’等其他的字符串。‘^’:指匹配的字符串在行首,
⒓Linux常用指令---grep(搜索过滤)(转)
⒔Linux常用指令---grep(搜索过滤)(转)Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹?配的行打印出来。grep全称是Global?Regular?Expression?Print,表示全局正则表达式版本,它的使用权限是所有用户。grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回,如果搜索不成功,则返回,如果搜索的文件不存在,则返回。我们利用这些返回值就可进行一些自动化的文本处理工作。.命令格式:grep??pattern?file.命令功能:用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。.命令参数:-a???--text???#不要忽略二进制的数据。???-A《显示行数》???--after-context=《显示行数》???#除了显示符合范本样式的那一列之外,并显示该行之后的内容。???-b???--byte-offset???#在显示符合样式的那一行之前,标示出该行第一个字符的编号。???-B《显示行数》???--before-context=《显示行数》???#除了显示符合样式的那一行之外,并显示该行之前的内容。???-c????--count???#计算符合样式的列数。???-C《显示行数》????--context=《显示行数》或-《显示行数》???#除了显示符合样式的那一行之外,并显示该行之前后的内容。???-d?《动作》??????--directories=《动作》???#当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。???-e《范本样式》??--regexp=《范本样式》???#指定字符串做为查找文件内容的样式。???-E??????--extended-regexp???#将样式为延伸的普通表示法来使用。???-f《规则文件》??--file=《规则文件》???#指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。???-F???--fixed-regexp???#将样式视为固定字符串的列表。???-G???--basic-regexp???#将样式视为普通的表示法来使用。???-h???--no-filename???#在显示符合样式的那一行之前,不标示该行所属的文件名称。???-H???--with-filename???#在显示符合样式的那一行之前,表示该行所属的文件名称。???-i????--ignore-case???#忽略字符大小写的差别。???-l????--file-with-matches???#列出文件内容符合指定的样式的文件名称。???-L???--files-without-match???#列出文件内容不符合指定的样式的文件名称。???-n???--line-number???#在显示符合样式的那一行之前,标示出该行的列数编号。???-q???--quiet或--silent???#不显示任何信息。???-r???--recursive???#此参数的效果和指定“-d?recurse”参数相同。???-s???--no-messages???#不显示错误信息。???-v???--revert-match???#显示不包含匹配文本的所有行。???-V???--version???#显示版本信息。???-w???--word-regexp???#只显示全字符合的列。???-x????--line-regexp???#只显示全列符合的列。???-y???#此参数的效果和指定“-i”参数相同。.规则表达式:grep的规则表达式:^??#锚定行的开始?如:’^grep’匹配所有以grep开头的行。????$??#锚定行的结束?如:’grep$’匹配所有以grep结尾的行。????.??#匹配一个非换行符的字符?如:’gr.p’匹配gr后接一个任意字符,然后是p。????*??#匹配零个或多个先前字符?如:’*grep’匹配所有一个或多个空格后紧跟grep的行。????.*???#一起用代表任意字符。???rep’匹配Grep和grep。????rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。????(..)??#标记匹配字符,如’(love)’,love被标记为。????《??????#锚定单词的开始,如:’》??????#锚定单词的结束,如’grep》’匹配包含以grep结尾的单词的行。????x{m}??#重复字符x,m次,如:’{}’匹配包含个o的行。????x{m,}??#重复字符x,至少m次,如:’o{,}’匹配至少有个o的行。????x{m,n}??#重复字符x,至少m次,不多于n次,如:’o{,}’匹配--个o的行。???w????#匹配文字和数字字符,也就是,如:’Gw*p’匹配以G后跟零个或多个文字或数字字符,然后是p。???W????#w的反置形式,匹配一个或多个非单词字符,如点号句号等。???b????#单词锁定符,如:?’bgrepb’只匹配grep。??POSIX字符:为了在不同国家的字符编码中保持一至,POSIX(The?Portable?Operating?System?Interface)增加了特殊的字符类,如。在linux下的grep除fgrep外,都支持POSIX的字符类。????#文字数字字符???????#文字字符???????#数字字符???????#非空字符(非空格、控制字符???????#小写字符???????#控制字符???????#非空字符(包括空格???????#标点符号???????#所有空白字符(新行,空格,制表符???????#大写字符??????#十六进制数字(-,a-f,A-F??.使用实例:实例:查找指定进程命令:ps?-ef|grep?svn输出:#?ps?-ef|grep?svnroot????????????Dec?????::?svnserve?-d?-r?/opt/svndata/grape/root?????:?pts/????::?grep?svn#说明:第一条记录是查找出的进程;第二条结果是grep进程本身,并非真正要找的进程。实例:查找指定进程个数命令:ps?-ef|grep?svn?-cps?-ef|grep?-c?svn输出:#?ps?-ef|grep?svn?-c#?ps?-ef|grep?-c?svn?#说明:实例:从文件中读取关键词进行搜索命令:cat?test.txt?|?grep?-f?test.txt输出:#?cat?test.txt?hnlinuxpeida.blogs.ubuntuubuntu?linuxredhatRedhatlinuxmint#?cat?test.txt?linuxRedhat#?cat?test.txt?|?grep?-f?test.txthnlinuxubuntu?linuxRedhatlinuxmint#说明:输出test.txt文件中含有从test.txt文件中读取出的关键词的内容行实例:从文件中读取关键词进行搜索?且显示行号命令:cat?test.txt?|?grep?-nf?test.txt输出:#?cat?test.txt?hnlinuxpeida.blogs.ubuntuubuntu?linuxredhatRedhatlinuxmint#?cat?test.txt?linuxRedhat#?cat?test.txt?|?grep?-nf?test.txt:hnlinux:ubuntu?linux:Redhat:linuxmint#说明:输出test.txt文件中含有从test.txt文件中读取出的关键词的内容行,并显示每一行的行号实例:从文件中查找关键词命令:grep?’linux’?test.txt输出:#?grep?’linux’?test.txt?hnlinuxubuntu?linuxlinuxmint#?grep?-n?’linux’?test.txt?:hnlinux:ubuntu?linux:linuxmint#说明:实例:从多个文件中查找关键词命令:grep?’linux’?test.txt?test.txt输出:#?grep?-n?’linux’?test.txt?test.txt?test.txt::hnlinuxtest.txt::ubuntu?linuxtest.txt::linuxminttest.txt::linux#?grep?’linux’?test.txt?test.txt?test.txt:hnlinuxtest.txt:ubuntu?linuxtest.txt:linuxminttest.txt:linux#说明:多文件时,输出查询到的信息内容行时,会把文件的命名在行最前面输出并且加上“:“作为标示符实例:grep不显示本身进程命令:ps?aux|grep?shps?aux?|?grep?ssh?|?grep?-v?“grep“输出:#?ps?aux|grep?sshroot?????.??.????????????Ss???Nov???:?/usr/sbin/sshdroot????.??.????????????Ss???:???:?sshd:?rootpts/?root????.??.??????pts/??S+???:???:?grep?sshshroot?????.??.????????????Ss???Nov???:?/usr/sbin/sshdroot????.??.????????????Ss???:???:?sshd:?rootpts/?#?ps?aux?|?grep?ssh?|?grep?-v?“grep“root?????.??.????????????Ss???Nov???:?/usr/sbin/sshdroot????.??.????????????Ss???:???:?sshd:?rootpts/说明:实例:找出已u开头的行内容命令:cat?test.txt?|grep?^u输出:#?cat?test.txt?|grep?^uubuntuubuntu?linux#说明:实例:输出非u开头的行内容命令:cat?test.txt?|grep?^输出:hnlinuxpeida.blogs.redhatRedhatlinuxmint#说明:实例:输出以hat结尾的行内容命令:cat?test.txt?|grep?hat$输出:#?cat?test.txt?|grep?hat$redhatRedhat#说明:实例:输出ip地址命令:?????ifconfig?eth|grep?-E?“(“输出:{,}“??????????i?addr:...??Bcast:...??Mask:...“??????????i?addr:...??Bcast:...??Mask:...#说明:实例:显示包含ed或者at字符的内容行命令:cat?test.txt?|grep?-E?“ed|at“输出:#?cat?test.txt?|grep?-E?“peida|“peida.blogs.#?cat?test.txt?|grep?-E?“ed|at“redhatRedhat#说明:实例:显示当前目录下面以.txt?结尾的文件中的所有包含每个字符串至少有个连续小写字符的字符串的行命令:grep?’{}’?*.txt输出:{}’?*.txttest.txt:hnlinuxtest.txt:peida.blogs.test.txt:linuxmint#实例:日志文件过大,不好查看,我们要从中查看自己想要的内容,或者得到同一类数据,比如说没有日志信息的命令:grep?’.’?aess.log|grep?-Ev?’’?》?aess.loggrep?’.’?aess.log|grep?-Ev?’(|/photo/|/css/)’?》?aess.loggrep?’.’?aess.log|grep?-E?’’?》?aess.log输出:#?grep?“.”aess.log|grep?-Ev?“”?》?aess.log说明:上面句命令前面两句是在当前目录下对aess.log文件进行查找,找到那些不包含的行,把它们放到aess.log中,后面去掉’v’,即是把有的行放入aess.log
⒕Linux命令之grep
⒖grep(globalsearchregularexpression(RE)andprintouttheline即:全面搜索正则表达式并把行打印出来命令是一个强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。greppatternfile-a:不要忽略二进制数据-A《n》:除了显示匹配的行外,还显示之后的n行-b:在符合条件的行之前,显示该行第一个字符的编号-B《n》:除了显示符合条件的行外,还显示之前的n行-c:计算符合条件的列数-C《n》:除了显示符合条件的行外,显示该行之前和之后各n行-H:显示匹配行所属文件名-i:不区别大小写-n:列出符合条件的行,并显示行号-r:查询文件夹的内容-x:只显示全行符合的行-o:只显示匹配到的内容递归搜索grep-r-n“ql“.参考自linux学习笔记---命令grep