IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    awk学习笔记之正则表达式

    admin发表于 2014-06-07 09:09:26
    love 0

    正则在Awk中用处比较多,这里就其主要用法做个大概的介绍。

    • 使用正则

    awk中的regexp是用斜线包括,如/xx/, 就是一个比较简单的正则

    awk '/foo/ {print $2}'
    

    上面的示例是每行的记录只要包括foo字符串的,就将其第二个字段打印

    注:/foo/ : 是指只要记录包含子串即可,不管其出现的位置

    • 两种匹配方式~  !~
    1. str ~ /regexp/    str匹配正则表达式时,返回true
    2. str !~  /regexp/   str不匹配正则表达式时,返回true
    • 正则中的转义字符
      对于一些非可打印的字符,使用\进行转义。
      如 \t : 代表tab  \\  代表\,   \*代表*
    • 正则中使用的operator
      1. ^ : 头部开始匹配
        如^Sep :  则str必须以Sep开头,正则匹配才会返回true
      2. $ :  尾部匹配
        如end$ :  则str必须以end结尾,则正匹配才会返回true
      3. . : 匹配任意的字符
      4. [...] : 匹配[]包含字符的某一个
        如[0-9] 匹配任意的一个数字
        [a-zA-Z] 匹配任意的字母
        [MVX] 匹配字符’M’ ‘V’ ‘X’中的某一个
        内置的表示:[:alnum:] 代表所有的字母和数字,[:alpha:] 代表所有的字母  [:digit:] 代表所有的数字
      5. [^...] : 中括号中加入^, 匹配非[]内的所有字符
      6. | : 或的关系,^P | [0-9] 匹配所有的以P开头的字符串,或者包含数字的字符串
        注:| 的优先级最低
      7. () : 将正则括起来
      8. 出现次数的operator: * + ? {m,n}
    • awk的正则匹配是大小写敏感,可使用tolower(str) ~ /regexp/

    参考文章:http://www.math.utah.edu/docs/info/gawk_5.html

    您可能对下面文章也感兴趣:

    • awk中ord的实现:将字符转化对应的ascii码
    • awk学习笔记【一】
    • 过滤注释的正则表达式


沪ICP备19023445号-2号
友情链接