正则 表达式
grep : Global search REgular expression and Printout the line. 文本搜索工具。根据用户指定的文本模式(正则表达式元字符及正常字符组合而成)对目标文件进行逐行搜索,显示能匹配到的行。 grep 命令: grep [OPTIONS] PATTERN [FILE...] --color[=WHEN](输出是把匹配到的字符是否标记) 参数如下: auto always never -o显示被匹配到的内容(特定环境需要) 例如:使用echo命令输出一个绝对路径,使用grep 取出基名。
[root@localhost /]# echo /etc/rc.d/init.d/functions | grep -o -E "[[:alnum:]]+/?$" functions -iignore(忽略) 不区分字符大小写。(适用于单字符) -v 不能被模式匹配到的(反向选取) -E 使用扩展的正则表达式
-A -B -C 正则表达式(REGEXP):元字符和正常字符所书写的模式。 基本正则表达式:(grep) 扩展的正则表达式:(egrep) 元字符的功能:表达控制或统一匹配。 元字符匹配: . 匹配任意单个字符。(个数为一个) [] 指定范围内的单个字符。 [^] 指定范围外的单个字符。 [[:digit:]] 数字([:digit:]=[0-9]) [[:lower:]][[:upper:]] 小,大 写字母 [[:space:]] 空白字符 [[:punct:]] 标点符号 [[:alnum:]] 所有的字母(包括大小写)和数字 [[:alpha:]] 所有字符(包括大小写) [[::]]这里的 :: 需要特特别注意,别打错了。不然命令行解释不了。 次数匹配: * 任意长度(0-无穷次) .* 组合表示任意长度任意字符 ? 匹配前面字符0-1次; + 1次或多次 {m} m次 {m,n} 至少m次,至多n次 {0,n} 至多n次 {m,} 至少m次 位置锚定(出现的位置): ^ 行首 $ 行尾 ^$ 连用可以匹配整行。 &; b 匹配块首(字符串不包括空格字符) &; b 匹配块尾 &; &; b b 整块匹配 例子:ifconfig命令后,匹配出现一次或两次的数字 分组:() 注意:分组中的模式,在某次的具体匹配过程中的所匹配的字符,可以被grep 记忆(保存于内置的变量中),还可以被引用。 1:引用,模式中自左而右,由第一个左括号以及与之对应的右括号中的模式所匹配到的内容。 2:引用,模式中自左而右,由第二个左括号以及与之对应的右括号中的模式所匹配到的内容。
扩展的正则表达式:(表现形式不同,意义都一样。只是有些不用 ) 字符匹配: . 匹配任意单个字符。(个数为一个) [] 指定范围内的单个字符。 [^] 指定范围外的单个字符。 [[:digit:]] 数字([:digit:]=[0-9]) [[:lower:]][[:upper:]] 小,大 写字母 [[:space:]] 空白字符 [[:punct:]] 标点符号 [[:alnum:]] 所有的字母(包括大小写)和数字 [[:alpha:]] 所有字符(包括大小写) 次数匹配: * 任意长度(0-无穷次) ? 匹配前面字符0-1次; + 1次或多次 {m} m次 {m,n} 至少m次,至多n次 {0,n} 至多n次 {m,} 至少m次 位置锚定(出现的位置): ^ $ &; b (唯一grep 和egrep 用 没变的) &; b(唯一grep 和egrep 用 没变的) 分组: () 引用:1,2,..... 或者: a|b 例子:找出ifconfig命令结果中的1-255之间的数字。 [root@localhost /]# ifconfig | grep -E "b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|25[0-5])b" eth0 Link encap:Ethernet HWaddr 00:0C:29:79:E3:14 inet addr:172.16.249.71 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fe79:e314/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX bytes:7696098 (7.3 MiB) TX bytes:1477862 (1.4 MiB) inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |