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

想个标题偏头痛 2019-12-27

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

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

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

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 ]]            # 等价于上面的写法

相关推荐