在开发脚本的时候,我们总会发现需要调用的某些字符串时有规律的。通过筛选、提取和调用这些有规律的字符串,完善脚本的处理流程。正则就是这么一串有规律的字符串。在各种编程语言中都有正则,原理基本一致。在linux学习中,掌握好正则对于编写shell脚本能打下深厚根基。

    grep/egrep是shell脚本中常用的筛选命令之一。通过该命令配合正则表达式能够有效快速的筛选出需要的文本内容。


▎grep命令的基本用法:grep [-cinvrABC] 'word' filename

参  数作  用
-c统计匹配的行数
-i不区分大小写
-n显示行号
-v取反
-r遍历所有子目录
-A后面跟数字,过滤出符合要求的行以及下面的n行
-B后面跟数字,过滤出符合要求的行以及上面的n行
-C后面跟数字,过滤出符合要求的行以及上下各n行

测试示例:

[root@server01 test1]# grep -c sbin 1.txt
11
[root@server01 test1]# grep -i root 1.txt
root:x:0:0:root:/Root:/bin/bash
operator:x:11:0:operator:/Root:/sbin/nologin
[root@server01 test1]# grep -ni root 1.txt
1:root:x:0:0:root:/Root:/bin/bash
10:operator:x:11:0:operator:/Root:/sbin/nologin
[root@server01 test1]# grep -niv root 1.txt
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11:operator:x:11:0:operoator:/rt:/sbin/nologin
12:operator:x:11:0:operoooooator:/rt:/sbin/nologin
[root@server01 test1]# grep -niA2 root 1.txt
1:root:x:0:0:root:/Root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
10:operator:x:11:0:operator:/Root:/sbin/nologin
11-operator:x:11:0:operoator:/rt:/sbin/nologin
12-operator:x:11:0:operoooooator:/rt:/sbin/nologin
[root@server01 test1]# grep -niB2 root 1.txt
1:root:x:0:0:root:/Root:/bin/bash
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/Root:/sbin/nologin
[root@server01 test1]# grep -niC2 root 1.txt
1:root:x:0:0:root:/Root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/Root:/sbin/nologin
11-operator:x:11:0:operoator:/rt:/sbin/nologin
12-operator:x:11:0:operoooooator:/rt:/sbin/nologin


▎grep/egrep命令的高级用法:配合正则

grep/egrep_grep


以上用法在shell脚本中比较常见,需要经常练习,熟能生巧。