在linux中,用到正则表达的常用工具有:grep,sed,awk等。

grep


-c(count) :打印符合要求的行数

-i (ignore-case):忽略大小写

-n (line-number):在输出符合要求的行的同时连同行号一起输出

-v (invert-natch):打印不符合要求的行

-A (after-context):后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行

-B (before-context):后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行

-C (context):后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行

^                      :表示行的开始

$                       :表示行的结尾

-E                     :表示组合

.                     :表示任意一个字符

*                     :表示零个或多个前面的字符。

开始实践

 cat  pwd 

点击查看代码
root:x:0:0:root:/root:/bin/bash
root:x:0:0:Root:/root:/bin/root
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

1 包含root

cat pwd  | grep "root"  

2 顺便打印行数

cat pwd  | grep -n "root"

3 不区分大小写

cat pwd  | grep -n -i  "root"

4 反选

cat pwd  | grep -n -v  "root" 

5 组合

cat pwd  | grep -n -E  "root|mysql"

6 以root开始

cat pwd  | grep -n   "^root"

7 以root结尾

cat pwd  | grep -n   "root$"

8 -A    -B   -C

cat pwd  | grep -n -A2   "root" 

cat pwd  | grep -n -B2   "root"  

cat pwd  | grep -n -C2   "root" 

9 字符. 任意一个字符

cat pwd  | grep -n    "r..t" 

10 字符* 表示零个或多个前面的字符。

cat pwd  | grep -n    "ro*t"

 

sed工具的使用: