|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!1.grep简介
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的事情体例是如许的,它在一个或多个文件中搜刮字符串模板。假如模板包含空格,则必需被援用,模板后的一切字符串被看做文件名。搜刮的了局被送到屏幕,不影响原文件内容。
grep可用于shell剧本,由于grep经由过程前往一个形态值来讲明搜刮的形态,假如模板搜刮乐成,则前往0,假如搜刮不乐成,则前往1,假如搜刮的文件不存在,则前往2。我们使用这些前往值便可举行一些主动化的文本处置事情。
2.grep正则表达式元字符集(基础集)
^
锚定行的入手下手如:^grep婚配一切以grep开首的行。
$
锚定行的停止如:grep$婚配一切以grep开头的行。
.
婚配一个非换行符的字符如:gr.p婚配gr后接一个恣意字符,然后是p。
*
婚配零个或多个先前字符如:*grep婚配一切一个或多个空格后紧跟grep的行。.*一同用代表恣意字符。
[]
婚配一个指定局限内的字符,如[Gg]rep婚配Grep和grep。
[^]
婚配一个不在指定局限内的字符,如:[^A-FH-Z]rep婚配不包括A-R和T-Z的一个字母开首,紧跟rep的行。
(..)
标志婚配字符,如(love),love被标志为1。
<
锚订单词的入手下手,如:<grep婚配包括以grep开首的单词的行。
>
锚订单词的停止,如grep>婚配包括以grep开头的单词的行。
x{m}
反复字符x,m次,如:0{5}婚配包括5个o的行。
x{m,}
反复字符x,最少m次,如:o{5,}婚配最少有5个o的行。
x{m,n}
反复字符x,最少m次,未几于n次,如:o{5,10}婚配5--10个o的行。
w
婚配笔墨和数字字符,也就是[A-Za-z0-9],如:Gw*p婚配以G后跟零个或多个笔墨或数字字符,然后是p。
W
w的反置情势,婚配一个或多个非单词字符,如点号句号等。
单词锁定符,如:grep只婚配grep。
3.用于egrep和grep-E的元字符扩大集
+
婚配一个或多个先前的字符。如:[a-z]+able,婚配一个或多个小写字母后跟able的串,如loveable,enable,disable等。
?
婚配零个或多个先前的字符。如:gr?p婚配gr后跟一个或没有字符,然后是p的行。
a|b|c
婚配a或b或c。如:grep|sed婚配grep或sed
()
分组标记,如:love(able|rs)ov+婚配loveable或lovers,婚配一个或多个ov。
x{m},x{m,},x{m,n}
感化同x{m},x{m,},x{m,n}
4.POSIX字符类
为了在分歧国度的字符编码中坚持一至,POSIX(ThePortableOperatingSystemInterface)增添了特别的字符类,如[:alnum:]是A-Za-z0-9的另外一个写法。要把它们放到[]号内才干成为正则表达式,如[A-Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都撑持POSIX的字符类。
[:alnum:]
笔墨数字字符
[:alpha:]
笔墨字符
[:digit:]
数字字符
[:graph:]
非空字符(非空格、把持字符)
[:lower:]
小写字符
[:cntrl:]
把持字符
[:print:]
非空字符(包含空格)
[:punct:]
标点标记
[:space:]
一切空缺字符(新行,空格,制表符)
[:upper:]
年夜写字符
[:xdigit:]
十六进制数字(0-9,a-f,A-F)
5.Grep下令选项
-?
同时显现婚配行高低的?行,如:grep-2patternfilename同时显现婚配行的高低2行。
-b,--byte-offset
打印婚配行后面打印该行地点的块号码。
-c,--count
只打印婚配的行数,不显现婚配的内容。
-fFile,--file=File
从文件中提取模板。空文件中包括0个模板,以是甚么都不婚配。
-h,--no-filename
当搜刮多个文件时,不显现婚配文件名前缀。
-i,--ignore-case
疏忽巨细写不同。
-q,--quiet
作废显现,只前往加入形态。0则暗示找到了婚配的行。
-l,--files-with-matches
打印婚配模板的文件清单。
-L,--files-without-match
打印不婚配模板的文件清单。
-n,--line-number
在婚配的行后面打印行号。
-s,--silent
不显现关于不存在大概没法读取文件的毛病信息。
-v,--revert-match
反检索,只显现不婚配的行。
-w,--word-regexp
假如被<和>援用,就把表达式做为一个单词搜刮。
-V,--version
显现软件版本信息。
6.实例
要用好grep这个工具,实在就是要写好正则表达式,以是这里不合错误grep的一切功效举行实例解说,只列几个例子,解说一个正则表达式的写法。
$ls-l|grep^a
经由过程管道过滤ls-l输入的内容,只显现以a开首的行。
$greptestd*
显现一切以d开首的文件中包括test的行。
$greptestaabbcc
显现在aa,bb,cc文件中婚配test的行。
$grep[a-z]{5}aa
显现一切包括每一个字符串最少有5个一连小写字符的字符串的行。
$grepw(es)t.*1aa
假如west被婚配,则es就被存储到内存中,并标志为1,然后搜刮恣意个字符(.*),这些字符前面紧随着别的一个es(1),找到就显现该行。假如用egrep或grep-E,就不必""号举行本义,间接写成w(es)t.*1就能够了。
欢迎大家来到仓酷云论坛! |
|