正则表达式
文件名通配(globbing): glob 特殊字符,元字符,不表示字符的表面意义,而是能匹配符合指定特征的字符串。 * 任意长度的任意字符,可以为空。 ? 任意单个字符,不能为空。 [] 匹配指定范围内的任意单个字符。 例如: [a-z] [A-Z] [0-9] [a-z0-9] [:alpha:] 所有大小写字母 [:digit:] 所有数字 [:space:] 空白,包含空格和制表符等等。 [:lower:] 所有小写字母 [:upper:] 所有大写字母 [:alnmu:] 所有大小写字母和数字 [:punct:] 所有的标点符号 [:print:] 所有能打印显示出来的字符 [:blank:] 空格和制表符。 [^] 取反,指定范围之外的任意单个字符。 例如: [^a-z]=[^[:lower:]] 表示除小写字符以外的任意单个字符。 REGular EXPeression (REGXP):正则表达式。 字符(元字符 PATTERN)体现通配的含义,而不是本身的含义。 Basic REGXP:基本正则表达式。 Extended REGXP:扩展正则表达式。 grep:Global Regular Experssion Printing. 全局搜索正则表达式。使用基本正则表达式。 文本过滤工具,能够实现根据指定模式(PATTERN),逐行搜索文件内容,并将匹配到的行显示出来。 #grep [OPTION] ... 'PATTERN' FILES -v 反向取值,显示不匹配的内容。 --color=COLOR 将匹配项用某种颜色COLOR显示。默认不赋值则为auto,红色。 -i 做模式匹配的时候不区分字符 大小写。 -o 只显示匹配到的字符串本身。每一个串显示为一行。 -A NUM 显示匹配行后NUM行的内容。 -B NUM 显示匹配行前NUM行的内容。 -C NUM 显示匹配行前后NUM行的内容。上下文。 -E 使用扩展的正则表达式。 例如: #grep 'cpu' /proc/cpuinfo 显示/proc/cpuinfo中包含cpu的条目。 #ifconfg |grep 'inte addr' |cut -d: -f2|cut -d ' ' -f1 显示ifconfig中网卡的ip地址。 egrep [OPTION] 'PATTERN' FLIES 扩展正则表达式 PATTERN(元字符): 文本字符和正则表达式的元字符组成的匹配条件。 基本正则表达式元字符: 字符匹配: 1.. 匹配任意单个字符。 例如: # grep 'c.u' /proc/cpuinfo 匹配文件中包含c.u的内容。 cpu cpu这个符合条件。 2.[] 匹配指定范围内的任意单个字符。 例如: [a-z] [A-Z] [0-9] [a-z0-9] # grep 'c..u [a-z]' /proc/info 匹配文件中包含c..u 同时后边有小写字母的内容。 3.[^] 匹配指定范围外的任意单个字符 4..* 匹配任意长度的任意字符。 例如: a.*b 匹配以a开头,以b结尾,中间任意长度任意字符。 5.文件名通配中常见的元字符。 [:alpha:] 所有大小写字母 [:digit:] 所有数字 [:space:] 空白,包含空格和制表符等等。 [:lower:] 所有小写字母 [:upper:] 所有大写字母 [:alnmu:] 所有大小写字母和数字 [:punct:] 所有的标点符号 [:print:] 所有能打印显示出来的字符 [:blank:] 空格和制表符 例如: #grep '[[:space:]][[:digit:]]$' /etc/inittab 匹配以数字结尾,数字前有空白字符的行。 次数匹配: 工作在贪婪模式下,能匹配多长匹配多长。整体内容可能不匹配,但是会匹配其中符合条件的部分内容。 1.* 次数匹配,匹配其前的字符0次,1次或者多次。 例如: ab*c匹配abc abbc ac abdc,其中abdc不符合。 2.? 次数匹配,匹配其前的字符0次,1次。 例如: ab?c 匹配ac abc adc 其中adc不匹配。 3.{m,n} 精确匹配,最少m次,最多n次。 {m,} 至少m次 {0,n} 至多n次 {m} 精确m次 例如: a[a-z]{0,2}c 匹配aAc aaaac aaaac 其中都不匹配。 a.{1,3}b 匹配已a开头,b结尾,中间任意1-3个字符,最少1个字符,最多3个字符。 位置锚定 单词锚定 &; 或 b 锚定词首。其后边的任意字符必须作为单词首部出现。 &; 或 b 锚定词尾。其前边的任意字符必须作为单词尾部出现。 例如: #grep '&;root&;' /etc/passwd 在/etc/passwd文件中匹配root这个单词。 #grep 'brootb' /etc/passwd 行锚定 ^ 行首锚定。此字符后边的任意内容必须出现在行首。 $ 行尾锚定。此字符前边的任意内容必须出现在行位。 ^$ 空白行。 例如; &;r..t 匹配root chroot rooter ,其中chroot不匹配。 r..t&; 匹配root chroot rooter ,其中rooter不匹配。 ^r..t 匹配root chroot rooter ,其中chroot不匹配。 r..t$ 匹配root chroot rooter ,其中rooter不匹配。 root[[:pounct:]]{0,1} 匹配以root为结尾的行。 分组 (PATTERN) 分组字符: 例如: x(ab)*y 匹配以ab成组出现的字符。 向后引用: (PATTERN)1 引用前面匹配到的内容。 (PATTERN1(PATTERN2))12 多括号之间匹配是依照从左至右的括号来匹配的。 1 匹配PATTERN1 2 匹配PATTERN2. 例如: he love his lover. she like her liker. he love is liker. she like her lover. 匹配前后单词相同的行,使用(l..e).*1r匹配。着这样第1、2行是符合匹配的。
扩展的正则表达式元字符: 部分和基本正则表达式元字符相同。 字符匹配: . [] [^] 次数匹配: * ? + 匹配其前的字符至少1次,等同于{0,1} {m,n} 至少m次,至多n次。 #ifconfig | egrep --color ‘&;([0-9]|[0-9][0-9]|1[0-9][0-9]|25[0-5])&;.{3}&;([0-9]|[0-9][0-9]|1[0-9][0-9]|25[0-5])&;’ 列出ifconfig命令中0-255的数字。
锚定: 或者: | PATTERN1|PATTERN2
例如:C|cat 匹配的是C或者是cat。 分组 (PATTERN1(PATTERN2))12 egrep = grep -E (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |