shell中的正则表达式, and和or写法, vim中的查找和替换用法, 正则中的posix字符类

1. shell中的正则和原生的正则有些许出入, 以下列举了shell中的正则规则:

    

  图中\number 代表前面对应()位置的内容, 类似于python中的命名分组, \对应数字可直接引用括号中内容

 

  注意扩展正则元字符的使用结果可能和预期有差异, 对比扩展和基本两个截图, 会发现, 同样的一个字符, 会使用\, 这就是

 问题所在, 在grep中默认使用的都是基本元字符, 要想使用扩展元字符可在对应位置加\ 或者使用egrep来代替grep命令.

 

 

 

2. shell中的正则使用举例:

 双括号的额外含义, 其内可使用正则表达式, 并不表示正则必须在双括号中才能执行;

 [[ 10 =~ ^[0-9]+$ ]] 用于shell中判定是否是数字, 注意正则处不要加引号, 加引号表示字符串匹配; 取反在10前加叹号即可;
 shell中这些命令都是根据正则规则来解析的, 有vi, grep, sed, awk, python, vim;

 

3. vim中使用正则进行查找与替换:

 vim编辑器中的替换, %表示全文, 即第一行到最后一行. s表示替换, 完整命令如下:
 : %s/xx/XX/ # 表示把小写xx换为大写的, 只替换第一个, 无论第一个是否是单纯的xx或包含其他字符的
 : %s/ss/SS/g # 替换全局, 所有包含ss的都替换, 无论ss是否是单独的.
 : %s/\<ss\>/SS/g # \< \>用于限定词首和词尾, 限定ss两边不能有字母, 标点除外
 正则中严格区分大小写, shell中匹配不会严格区分

 

4. shell中的and和or用法举例:

 [ 1 -lt 2 -a 5 -gt 10 ]  [ 1 -lt 2 -o 5 -gt 10 ]

 [[ 1 -lt 2 && 5 -gt 10 ]]    [[ 1 -lt 2 || 5 -gt 10 ]]            # 等价于上面的写法

posted @ 2019-12-27 20:56  叶落kiss  阅读(2816)  评论(0编辑  收藏  举报