正则
- 正则就是一串有规律的字符串
- 常用的工具grep,sed,awk
- 掌握好正则对于编写shell脚本有很大帮助
grep/egrep工具的使用
grep命令格式: grep [-cinvABC] 'word' filename 常用选项如下
- -c :表示打印符合要求的行数
- -i :表示忽略大小写
- -n:表示输出符合要求的行及其行号
- -v:表示打印不符合要求的行
- -r: 遍历所有子目录
- -A:后边跟一个数字,例如-A2表示打印符合要求的行以及下面两行
- -B:后边跟一个数字,例如-B2表示打印符合要求的行以及上面两行
- -C:后边跟一个数字,例如-C2表示打印符合要求的行以及上下各两行
过滤所有包含数字行
grep '[0-9]' filename
过滤所有不包含数字行
grep -v '[0-9]' filename
过滤所有以#开头的行
grep -v '^#' filename
^在方括号[]里面取非; 不在方括号[]里面表示以什么开头;上例以#开头;
grep '^[^a-zA-Z]' filename //表示非字母开头
grep '^[^0-9]' filename //表示非数字开头
过滤出任意一个字符和重复字符
grep 'r.o' filename //.表示任意一个字符
grep 'r*o' filename //*表示零个或多个*前面的字符
指定要过滤出的字符出现次数
-
符号{}, 内部为数字,表示前面的字符要重复的次数.
-
还可以表示范围, {n1,n2} 其中n1<n2; 表示重复n1到n2次前面的字符, n2为空时,表示大于等于n1次
grep 'o\{2\}' filename egrep 'o{2}' filename // egrep 不需要加转义\ grep -E 'o{2}' filename //等同于egrep
使用()表示一个整体,和其他符号组合使用egrep '(oo){2}' filenam表oo出现2次的
过滤出一个或多个指定的字符
-
+表示匹配1个或多个 + 前面的字符.
egrep 'o+' filename
使用grep需要\转义+
过滤出零个或一个指定的字符
-
? 表示匹配0个或1个 ? 前面的字符.
egrep 'o?' filename
过滤出字符串1或者字符串2
-
| 表示或者
egrep 'aaa|ooo' filename