• linux正则表达式基础部分


    1.什么是正则表达式?

    简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法,

    例如:假设“@”代表boy,“!”代表girl。echo“@!” === “boygirl”

    通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串。

    linux正则表达式一般以行为单位处理的。

    2.为什么要学会正则表达式?

    在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫切的需要,从大量的字符串内容中查找符合工作需要的特定的字符串。这就要靠正则表达式。因此,可以说正则表达式就是为过滤这些字符串的需求而生的。

    3.容易混淆的两个注意事项:

    a.正则表达式应用非常广泛,存在于各种语言中,例如:php,python,java等。但是,我们今天讲的是linux系统运维工作中的正则表达式,即linux正则表达式,最常应用正则表达式的命令就是grep(egrep),sed,awk,换句话说linux三剑客要想能工作的更高效,那一定离不开正则表达式配合的。

    b.正则表达式和我们常用的通配符特殊字符是有本质区别的,这一点要注意。

    通配符例子:ls  *.log 这里的*就是通配符(表示所有),不是正则表达式。

    一、基础正则第一波字符说明:

    1)^word  匹配以word开头的内容。  vi/vim编辑器里^代表一行的开头

    2)word$  匹配以word结尾的内容。  vi/vim编辑器里$代表一行的结尾

    3)^$  表示空行

    二、基础正则第二波字符说明:

    4).     代表且只能代表任意一个字符

    5)     转义符号,例 . 就只代表点本身,让有着特殊身份意义的字符脱掉马甲,还原原型

    6)*     重复0个或多个前面的一个字符,例0*匹配没有0,有1个0或多个00000

    7).*    匹配所有字符。延伸 ^.* 以任意多个字符开头。.*$ 以任意多个字符结尾

    提示:点(.)的特殊含义小结:

    1、当前目录

    2.使得文件生效相当于source

    3.隐藏文件

    4.任意一个字符(grep正则)

    三、基础正则第三波字符说明:

    8)[abc]  匹配字符集合内的任意一个字符[a-zA-Z],[0-9]

    9)[^abc]  匹配不包含^后的任意一个字符的内容

    中括号里的^为取反,注意和中括号外面以 ... 开头区别

    10)a{n,m}  重复n到m次,前一个重复的字符。如果用egrep/sed  -r可以去掉斜线

           a{n,}  重复至少n次,前一个重复的字符。如果用egrep/sed  -r可以去掉斜线

           a{n}  重复n次,前一个重复的字符。如果用egrep/sed  -r可以去掉斜线

           a{,m} 

    注意:egrep(grep  -E)或sed  -r过滤一般特殊字符可以不转义(不用)

    三剑客“grep”总结

    grep一般常用参数:

    -a:在二进制文件中,以文本文件的方式搜索数据

    -c:计算找到‘搜索字符串’的次数

    -o:仅显示出匹配regexp的内容(用于统计出现文中的次数)

    -i:忽略大小写的不同,所以大小写视为相同

    -n:匹配的内容在其行首显示行号

    -v:反向选择,即显示没有‘搜索字符串’内容的那一行

    -E:扩张的grep,即egrep

    --color=auto:以特定颜色高亮显示匹配关键字

    提示:-i,-v为常用参数

    -A:After的意思,显示匹配字符串及其后n行的数据

    -B:before的意思,显示匹配字符串及其前n行的数据

    -C:context的意思,显示匹配字符串及其前后各num行

  • 相关阅读:
    洛谷 P1032 字串变换
    洛谷 P1027 Car的旅行路线
    洛谷 P1024 一元三次方程求解
    洛谷 P1018 乘积最大
    洛谷 P1023 税收与补贴问题
    洛谷 P3456 [POI2007]GRZ-Ridges and Valleys
    洛谷 P1183 多边形的面积
    codeforces 407C Curious Array
    codeforces 12D Ball
    codeforces 388D Fox and Perfect Sets(线性基+数位dp)
  • 原文地址:https://www.cnblogs.com/axzq/p/9574679.html
Copyright © 2020-2023  润新知