2024年9月Linux常用指令---grep(搜索过滤)(转)?Linux下Grep命令的详细使用方法
⑴Linux常用指令---grep(搜索过滤)(转)?Linux下Grep命令的详细使用方法
⑵*??#匹配零个或多个先前字符?如:’*grep’匹配所有一个或多个空格后紧跟grep的行,-L???--files-without-match???#列出文件内容不符合指定的样式的文件名称,-v???--revert-match???#显示不包含匹配文本的所有行,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文件中读取出的关键词的内容行,-e《范本样式》??--regexp=《范本样式》???#指定字符串做为查找文件内容的样式,.规则表达式:grep的规则表达式:^??#锚定行的开始?如:’^grep’匹配所有以grep开头的行,.??#匹配一个非换行符的字符?如:’gr.p’匹配gr后接一个任意字符。
⑶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命令的详细使用方法
⑹在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。
⑺如果谈论计算机操作命令的grep,语法与操作系统有关,对于unix,linux则是grep命令用于查找文件里符合条件的字符串。grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为-,则grep指令会从标准输入设备读取数据。语法:grep详细语法可查系统帮助文件,这里写不下。例子:grep-iapplefruitlist.txt意思是从文件水果表里,把词苹果找出来。