您的位置:首页 > 运维架构 > Shell

《shell 脚本攻略》--正则表达式的使用

2013-10-19 09:25 621 查看
首先看一下正则表达式的组成部分:



为了匹配给定文本中的所有单词,可以使用下面的正则表达式:

(?【a-zA-Z】+?)"?"用于匹配单词前后可能出现的空格。[a-z][A-Z]+代表一个或多个字母(a~z和A~Z)

为了匹配一个IP地址,可以使用下面的正则表达式:

[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

处理特殊字符:

正则表达式$、^、.、*、+、{}等作为特殊字符。

对于正则表达式:[a-z]*.[0-9]

它可以匹配0个或多个[a-z]([a-z]*),接任意单个字符(.),再接[0-9]中的任意一个字符,所以能够匹配abcd09。



经常使用的正则表达式举例

^                                 行首

$                                 行尾

^ [ t h e ]                      以t h e开头行

[ S s ] i g n a [ l L ]              匹配单词s i g n a l、s i g n a L、S i g n a l、S i g n a L

[Ss]igna[lL]".                同上,但加一句点

[ m a y M A Y ]             包含m a y大写或小写字母的行

^ U S E R $                  只包含U S E R的行

[tty]$                           以t t y结尾的行

" .                                带句点的行

^ d . . x . . x . . x          对用户、用户组及其他用户组成员有可执行权限的目录

^ [ ^ l ]                        排除关联目录的目录列表

^[^d]                ls –l | grep ^[^d] 只显示非文件夹的文件         

[ . * 0 ]                       0之前或之后加任意字符

[ 0 0 0 * ]                  0 0 0或更多个

[ iI]                             大写或小写I

[ i I ] [ n N ]                大写或小写i或n

[ ^ $ ]                         空行

[ ^ . * $ ]                     匹配行中任意字符串

^ . . . . . . $                  包括6个字符的行

[a- zA-Z]                     任意单字符

[ a - z ] [ a - z ] *         至少一个小写字母

[ ^ 0 - 9 " $ ]                非数字或美元标识

[ ^ 0 - 0 A - Z a - z ]     非数字或字母

[ 1 2 3 ]                       1到3中一个数字

[ D d ] e v i c e            单词d e v i c e或D e v i c e

D e . . c e                    前两个字母为D e,后跟两个任意字符,最后为c e

" ^ q                            以^ q开始行

^ . $                            仅有一个字符的行

^".[0-9][0-9]                以一个句点和两个数字开始的行

' " D e v i c e " '            单词d e v i c e

D e [ V v ] i c e " .               单词D e v i c e或d e v i c e

[ 0 - 9 ] " { 2 " } - [ 0 - 9 ] " { 2 " } - [ 0 - 9 ] " { 4 " }      对日期格式d d - m m - y y y y

[ 0 - 9 ] " { 3 " } " . [ 0 - 9 ] " { 3 " } " . [ 0 - 9 ] " { 3 " } " . [ 0 - 9 ] " { 3 " } I P地址格式

[ ^ . * $ ]                     匹配任意行

[A-Za-z]*            匹配所有单词


常用的g r e p选项

-c 只输出匹配行的计数。

-i 不区分大小写(只适用于单字符)。

-h 查询多文件时不显示文件名。

-l 查询多文件时只输出包含匹配字符的文件名。

-n 显示匹配行及行号。

-s 不显示不存在或无匹配文本的错误信息。

-v 显示不包含匹配文本的所有行。

例子

grep -v "Sort" tab2     显示不包含匹配文本的所有行

grep -n "Sort" tab2     显示匹配行及行号

grep -c "Sort" tab2     只输出匹配行的计数

精确匹配: grep "01">" tab2

grep -in "code" tab2    忽略大小写

多次过滤

grep -in "code" tab2 | grep "02"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: