正则表达式

 

# 正则表达式(非常重要红色为必须掌握) : 就是为处理大量字符串而定义的一套规则和方法 (贪婪模式下)
grep awk sed 三剑客 常用正则表达式
用之前的准备操作:
1 alias grep='grep --color=auto'    
2 export LC_ALL=C   字符集需要改改
------------------------------------------------------
字符      *    前一字符匹配0次或任意多次  
           "a*"等于0个a 或"aa*"匹配最少有一个a的行
------------------------------------------------------
字符      .    除了换行符外的任意一个字符
           "a..f" = abcf  aeff等    ".*"=所有    
           "a.*f" =  af abf agnlf 
------------------------------------------------------
行首        ^    匹配行首  ^yes代表以yes开头的行
           "^#"#开头的行 (用于去掉注释)
------------------------------------------------------

行尾      $    匹配行尾  yes$代表以yes结尾的行
           "n$" 以n结尾的行
           "^$" 空白行
------------------------------------------------------
指定范围内
      []   匹配[]内指定的任意一个字符的行(指定范围内的任意字符)
           "a[ab]b"= aab  abb   
                 "[0-9]"包含有数字开有的行
           "^[0-9]" 以数字开头的行
                  [^0-9]  以非数字开头
        [0-9]    所有数字
        [a-z]    所有小写字母
        [A-Z]    所有大写字母
   
指定范围外
      [^]  匹配不以[]内指定的任意一个字符开头的行(指定范围外的任意字符)
         "[^0-9]"不含数字的行       "^[^0-9]" 不含数字开头的行
         "[^a-z]"不含小字母开头的行  "^[^a-zA-Z]" 不含字母的开头行

字符个数  ---------------------------------------
       \{n\}  匹配前面的字符出现n次。
              "a\{3\}" =aaa   aaaa  
              "[0-9]\{3\"=777 6666   7777
最少字符  ---------------------------------------
       \{n,\}匹配前面的字符最少出现n次
                "[0-9]\{3,\"=777 6666   7777 888888

最少最多  ---------------------------------------
       \{n,m\}匹配前面的字符最少出现n次最多出现m次
               "[0-9]\{3,4\"=777 6666   7777

前后位置  ---------------------------------------
       \btao 其后面的任意字符必须作为单词的首部出现(锚定词首)
       tao\b 其前面的任意字符必须作为单词的尾部出现(锚定词尾)
        字符串的限制
            grep "\btao\b" 意思是过滤出  只含有 tao 这个单词的 行(匹配单词的边界)
分组      ---------------------------------------
       \(\)
       \(ab\)匹配出现()中出现的任意字符一次或多次

        abc  ababc  abababc
          ---------------------------------------
引用       \1 后向引用,引用前面的第一个左括号以及与之对应的右括号的模式所匹配到的内容
       \2
               例子:  sed -i 's#XXXX(.*)XXX#\1#g' filename
               
               
实例:正则表达式取IP地址
1 ifconfig eth0 | sed -n '2p' | sed -r's#^.*dr:(.*)  B.*$#\1#g' 
2 ifconfig eth0 | sed -nr '2s#^.*dr:(.*)  B.*$#\1#gp'

对上天命令的参数解释:
-n   只输出匹配的行
p    将被替换行写入标准输出
-n,p 可以选择性的获得你想要的数据

 sed 正则匹配提取的方法:
    目标之前的匹配:  ^.*dr:
        目标      :  (.*)
    目标之后的匹配:   Bc.*$
    
    
    
# 扩展的正则表达式:主要用于 egrep或grep -E
    1 + 重复1或多个前面的字符
    2 ? 重复0个或1个前面的字符
    3 | 用“或”的方式产多个符合的字符串
    4 () 找出“用户组”字符串

 

posted on 2023-07-04 11:36  luokeli  阅读(17)  评论(0)    收藏  举报

导航