正则介绍_grep

正则介绍_grepshell

正则就是一串有规律的字符串编程

各类编程语言中都有正则,原理是同样的。编程语言

grep/egrep   sed   awk    是shell脚本“三剑客”server

grep (-c  -i  -n   -v     -r   -A   -B   -C )字符串

-c  行数   -n 行号it

-i 不区分大小写awk

-v 取返原理

-r  把子目录和孙目录下面全部的文件遍历一遍sed

若是不加-r  配置

-A后边跟数字,过滤出符合要求的行以及下面n行

-B后边跟数字,过滤出符合要求的行以及上面n行

-c后边跟数字,过滤出符合要求的行以及上下各n行

grep/egrep示例

[root@serverlooker-01 grep]# grep '[0-9]' passwd

[0-9] 表示方括号里面的任意一个字符

 

[root@serverlooker-01 grep]# grep -v '[0-9]' passwd
只要带数字的都不要

(:set nu 加上行号,方便查看)

---

以#开头的行
[root@serverlooker-01 grep]# grep -n '^#' /etc/inittab

把文件拷贝到当前目录下 [root@serverlooker-01 grep]# cp /etc/inittab ./

改动一下当前目录下的inittab (不要改etc下的,可能会致使系统启动不了)

(把15行过滤出来了)

之后看能会看不少跟服务相关的配置文件,配置文件里会有不少以#开头的行,是为了解释说明,因此看起来可能会很乱,因此能够用这种方法过滤。

--

放到[ ] 里面,是方括号里面字符的反义,和放到外面是不同的。表示取 非

[root@serverlooker-01 grep]# grep '[^0-9]' inittab

以非数字开头的行,列出来

[root@serverlooker-01 grep]# grep '^[^0-9]' inittab

以数字开头的行:

---

. 表示任意的一个字符。

* 表示 :*左边的字符重复0-n次

.* 表示任意一个任意字符

[root@serverlooker-01 grep]# grep '.*' passwd

---

[root@serverlooker-01 grep]# grep '{2}' passwd

这样写不表示任何意义,就表示一个花括号。在正则当中{ }用来表示一个范围,真正的写法:

[root@serverlooker-01 grep]# grep 'o{2}' passwd  表示o出现2次,但直接这样写不识别,须要作一个脱义:[root@serverlooker-01 grep]# grep 'o\{2\}' passwd

还能够表示一个范围:   ({}表示前面这个字符的重复范围)

若是不想写\,能够用egrep 或者grep -E

表示一个总体:

+ 表示+前面这个字符的1次或者屡次,(*是0次或屡次)

[root@serverlooker-01 grep]# grep 'o\+o' passwd

 

?表示 ?前面字符的0次或1次重复

| 表示或者,能够写多个

---

以下这些特别重要:

.

*

.*

+

?

^

$

---

OK.

相关文章
相关标签/搜索