9.1 正则介绍_grep
9.2 grep中
9.3 grep下
一、什么是正则
- 正则就是一串有规律的字符串,包括各种特殊符号
- 掌握正则对于编写shell有很大帮助
- 各种编程中都有正则,原理是一样的
二、grep简介
grep命令用来过滤字符
用法:
grep [-cinvrABC] 'word' filename
- -c:统计
- -n:显示行
- -i:不区分大小写
- -r:遍历所有的子目录
- -v:取反
- -A:后面跟数字,过滤出符合要求的行及下面n行
- -B:同上,过滤出符合要求的行及上面n行
- -C:同上,过滤出符合要求的行及上下n行
grep常用操作
- grep -n ‘root’ passwd
匹配‘root’并显示行号
- grep -vn 'root' passwd
匹配非"root"行并显示行号
- grep -A2 'root' passwd
匹配“root”行,并显示以下两行。
- grep -B2 'root' passwd
匹配“root”行,并显示以下两行。
- grep -C2 'root' passwd
匹配“root”行,并显示上下两行。
四、grep正则操作
- grep '[0-9]' /etc/inittab
匹配带数字的行,[0-9]就是0到9的意思
- grep -v '^#' passwd
匹配以非“#”开头的行,^表示以什么开头
- grep '[^0-9]' test
匹配所有非数字 ,把^符号放在[]中就是非的意思。
- grep '^[^0-9]' test
匹配所有以非数字开头的行
- grep 'r.ot' passwd
匹配所有“rxot”的行,”"."代表任意一个字符
- grep 'o*o' passwd
"*"代表*左边的字符重复0-n次,也就是一个o也会匹配,ooo....多个也会匹配
- grep '.*' passwd
".*"表示贪婪匹配,所有的都会被匹配
- grep 'o\{2\}' passwd
{n}中指定次数,指花括号左边字符的重复范围
如:grep 'o\{2\}' 会把两个oo匹配到
- 在grep中使用+ {} () | 需要时\进行脱意。不想脱意可以使用 egrep 或者 grep -E
- grep -E '(oo){2}' passwd
()表示组合的意思。
- grep 'o\+o' passwd
类似于*,不同的是+是1-n次,*是0-n次,如下图单个o不会被匹配到
- grep ‘o?t’ passwd
?表示左边字符的重复次数为0或者1
- grep -E 'root|test' passwd
'|'表示或者,比如以上就是匹配‘root’或者‘test’的意思
以上操作都不会修改文件,如果想要修改可以加上-i参数即可。