正则表达式基本运用
一、正则表达式的相关概念 正则表达式(或称为常规表达式)是通过一些特殊字符的排列,用以搜索/替换/删除一行或多行字符串等。简而言之,正则表达式就是处理字符串的方法。 正则表达式对于系统管理员来说是不可不学的,因为在系统繁忙的情况下,每天都会产生大量信息,而要从千百行的数据里查找有问题的行,用肉眼很难完成。而通过正则表达式将这些信息进行处理分析,系统管理将会变得很轻松。 二、正则表达式的基本运用及相关命令(grep、egrep命令) 基本正则表达式: 字符匹配: .:匹配任意单个字符 [ ]: 匹配指定范围内的任意单个字符 [^]: 匹配指定范围外的任意单个字符 [0-9],[[:digit:]] 任意数字 [^0-9],[^[:digit:]] 出数字之外任意字符 [a-z],[[:lower:]] 任意小写字母 [A-Z],[[:upper:]] 任意大写字母 [[:space:]] 空白字符 [[:punct:]] 任意标点符号 [0-9a-zA-Z],[[:alnum:]] 任意字母和数字 [a-zA-Z],[[:alpha:]] 任意字母
次数匹配: *:其左侧的字符出现任意次(0次,一次或多次); 例:以下例子中均使用1.txt .*:任意长度任意字符,工作于贪婪模式 ?:其左侧的字符出现0次或1次 +:其左侧的字符出现1次或多次 {m}:精确匹配其左侧的字符出现m次 {m,n}:匹配其左侧字符至少出现m次,至多出现n次 {0,SimKai;">至多n次; :至少m次; 位置锚定: ^: 锚定行首 $: 锚定行尾 ^PATTERN $:用模式来匹配整行; ^$: 匹配空白行; 单词锚定:由非特殊字符组成的连续的字符串 &; :锚定词首,也可用b &;PATTERN,或bPATTERN &; :锚定词尾,也可以用b PATTERN&;,或PATTERNb &;PATTERN&;:匹配PATTERN能匹配到的整个单词
分组:() 注意:分组中的模式,在某次的具体匹配过程中所匹配到的字符,可以被grep记忆(保存于内置的变量中,这些变量是1,2,...),因此,还可以被引用; 1:引用,模式中自左而右,由第一个左括号以及与之对应的右括号中的模式所匹配到的内容; 2:引用,模式中自左右,由第二个左括号以及与之对应的右括号中的模式所匹配到的内容 例:
三、扩展正则表达式(egrep命令) 扩展正则表达式简化了基础正则表达式的命令,使用起来更加方便 扩展的正则表达式元字符及其意义: *: 匹配任意次 ?:0或1次 +: 至少1次 {m}:精确匹配m次; {m,n}:至少m次,至多次; :至少m次; {0,SimKai;">| :或者(a|b:a或者b 或者两侧的所有内容) grep命令: grep [OPTIONS] PATTERN [FILE...] 模式中包含变量,变量替换需双引号“”,否则单双引号都可以 -o: 只显示被模式匹配到的内容 -i: ignore case,不区分字符大小写 -v: 显示不能够被模式匹配到的行(匹配到的不显示) -E:使用扩展的正则表达式(egrep) -A #:after 被模式匹配到的行及后边的#行 -B #:before被模式匹配到的行及前边的#行 -C #-C 2 前后各两行 例子 显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行 基本正则表达式# grep "^#[[:space:]]+[^[:space:]]+"/etc/rc.d/rc.sysinit
扩展正则表达式# egrep "^#[[:space:]]+[^[:space:]]+" /etc/rc.d/rc.sysinit (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |