用户工具


通配符和正则表达式

通配符与正则表达式很容易混淆,首先要明白二者是不同的,通配符用于Linux的shell命令(如文件名相关操作)中,而正则表达式用于文本内容中的字符串搜索和替换等。通配符是Linux系统本身就支持的,而正则表达式用于vim编辑器或awk程序,这些文本处理工具正是由于支持正则表达式才变得强大。


通配符

  • [] 匹配一个字符
    1. [135] 1或者3或者5
    2. [1-5a-z] 1到5中或a到z中任意一个字符,
    3. [!1-5]除了1到5的任意一个非空字符
    4. [^1-5]同上
  • *:匹配0个字符或多个字符。
  • ?:匹配任何单个字符,且不能为空字符。
  • {}:多个结果的集合
    1. {a.txt,b.txt}同时匹配a.txt , b.txt

正则表达式

  • . 任意的一个字符
  • * 任意多个字符 a* 任意多个a, .
  • ^abc 以abc开头
  • abc$ 以abc结尾
  • n 重复n次
    1. a5 字符a重复5次
    2. a5, a重复大于5次
    3. a5,8 a重复大于5小于8次
  • ab[cd] 包含abc,或者abd的目标
  • ab[^cd] 不包含abc,或者abd的目标
  • () 括号中的内容当成一个字符来看
    1. hello123* 匹配hello后面有多个123字符串
    2. hello1233 匹配hello后面有3个123字符串

这些字符在vim还有不同的意思,去看看vim的语法


常用语法

  • grep -v “^$” 过滤空行
  • grep -v “^#” 过滤注释
  • grep -v “^#“|grep -v “^$” 过滤注释,过滤空行