====== 通配符和正则表达式 ====== 通配符与正则表达式很容易混淆,首先要明白二者是不同的,通配符用于Linux的shell命令(如文件名相关操作)中,而正则表达式用于文本内容中的字符串搜索和替换等。通配符是Linux系统本身就支持的,而正则表达式用于vim编辑器或awk程序,这些文本处理工具正是由于支持正则表达式才变得强大。 ---- ====== 通配符 ====== * [] 匹配一个字符 - [135] 1或者3或者5 - [1-5a-z] 1到5中或a到z中任意一个字符, - [!1-5]除了1到5的任意一个非空字符 - [^1-5]同上 * *:匹配0个字符或多个字符。 * ?:匹配任何单个字符,且不能为空字符。 * {}:多个结果的集合 - {a.txt,b.txt}同时匹配a.txt , b.txt ---- ====== 正则表达式 ====== * . 任意的一个字符 * * 任意多个字符 a* 任意多个a, .*任意多个任意字符 * \. 字符. * \* 字符* * ^abc 以abc开头 * abc$ 以abc结尾 * \{n\} 重复n次 - a\{5\} 字符a重复5次 - a\{5,\} a重复大于5次 - a\{5,8\} a重复大于5小于8次 * ab[cd] 包含abc,或者abd的目标 * ab[^cd] 不包含abc,或者abd的目标 * () 括号中的内容当成一个字符来看 - hello\(123\)* 匹配hello后面有多个123字符串 - hello\(123\)\{3\} 匹配hello后面有3个123字符串 这些字符在vim还有不同的意思,去看看[[vim]]的语法 ---- ====== 常用语法 ====== * grep -v "^$" 过滤空行 * grep -v "^#" 过滤注释 * grep -v "^#"|grep -v "^$" 过滤注释,过滤空行