正则grep
正则介绍_grep
正则介绍
- 正则就是一串有规律的字符串
- 掌握好正则对编写shell脚本有很大帮助
- 各种编程语言中都有正则,原理是一样的
- 常用的工具有grep/egrep、sed、awk
grep
. 表示任意一个任意字符
* 表示零个或多个*前面的字符
.* 表示通配,所有的都匹配
{} 表示范围,{}花括号前面字符的一个范围
+表示一个或多个+号前面的字符
?表示0个或一个问号前面的字符
|表示或者
过滤指定的关键词,格式为:grep [-cinvABC] '关键词' filename
-c:表示打印符合要求的行数
-n:表示输出符合要求的行及行号
-i:不区分大小写
-v:取反,打印不符合要求的行
-r:遍历所有子目录
匹配所有带root的文件
-A :后面跟一个数字,过滤出符合要求的行以及下面n行
-B:后面跟一个数字,过滤出符合要求的行以及上面n行
-C:后面跟一个数字,过滤出符合要求的行以及上下各n行
grep '[0-9]':表示过滤出包含数字的所有行
grep -nv '[0-9]':表示过滤出不包含数字的所有行
grep -v '^#':表示过滤掉所有已#开头的行,^表示以什么开头
grep '[^0-9]':表示过滤掉所有数字,^在中括号里表示非的意思
grep -n '^[^0-9]':表示过滤出以非数字开头的行和行号
grep -nv '^[^0-9]':表示过滤出以数字开头的行和行号
grep 'r.o':表示过滤出任意的一个字符, . 表示任意一个字符
grep 'o*o':表示过滤出零个到多个o(*前面的字符)
grep '.*':表示过滤出任意字符
grep 'o\ {2\ }' :表示过滤出指定字符出现的次数,{}可以是一个范围,如'o\ {0,3\ }'
还有两种表示方法:egrep 'o{2 }' grep -E 'o {2 }'
grep 'o+o':表示过滤出1个到多个o(+前面的字符)
grep 'o?t':表示过滤出零个到1个o(?前面的字符)
grep -E 'root|nologin' ,|表示或者的意思
把一个目录下,过滤所有*.txt文档中含有aa222的行; grep -r --include="*.txt" 'aa222' /