shell入门-grep2

案例介绍

搜索关键词带‘root’的行 并输出行号

[root@wangshaojun ~]# cg -n 'root' 1.txt
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin

搜索不带关键词‘nologin’的行,输出行号

[root@wangshaojun ~]# cg -vn 'nologin' 1.txt
1:root:x:0:0:root:/root:/bin/bash
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
26:wangshaojun:x:500:500::/home/wangshaojun:/bin/bash

搜索出包含数字的行

[root@wangshaojun ~]# cg '[0-9]' 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
....

搜索包含个别字符的行 ‘cN’

sync:x:5:0:sync:/sbin:/bin/sync
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

....

搜索包含字母的行

[root@wangshaojun ~]# cg '[a-zA-Z]' 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
....

搜索不包含字母的行

[root@wangshaojun ~]# cg -v '[a-zA-Z]' 1.txt

#$%%^&#@!!?????>>><<:"}{(特殊字符行)

                                     (空格行)
112234556754576543   (数字行)

匹配以字母开头的行

[root@wangshaojun ~]# cg '^[a-z]' 1.txt
root:x:0:0:root:/root:/bin/bash
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

..... (没有特殊字符行,空格行,数字行)

匹配以数字开头的行

[root@wangshaojun ~]# cg '^[0-9]' 1.txt
112234556754576543

匹配不以数字开头的行

[root@wangshaojun ~]# cg -v '^[0-9]' 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologi

                                                (空格行)

#$%%^&#@!!?????>>><<:"}{

匹配不以数字开头的行

[root@wangshaojun ~]# cg '^[^0-9]' 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
#$%%^&#@!!?????>>><<:"}{

.....(没有空格行)

搜索空行

[root@wangshaojun ~]# cg '^$' 1.txt///// '^'是开始 '$'是结束 中间什么都没有就是空行

                                           (空行)

////////////////////////////////////////////////////////////////////////////////////////////////

特殊符号 

特殊符号‘.’  表示任意一个字符

[root@wangshaojun ~]# cg 'r.o' 1.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

vcsa:x:69:69:virtual console memory oriowner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/r_oempty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spr oool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separ*orated SSH:/var/empty/sshd:/sbin/nologin
rtkit:x:498:499:RealtimeKit: r.o/proc:/sbin/nologin

特殊符号‘*’  表示数字0个或多个*号前面的字符和*后面的字符匹配

[root@wangshaojun ~]# cg 'r.o' 1.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
vcsa:x:69:69:virtual console memory oriowner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/r_oempty/sas

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

syrrrrrrrrronc:x:5:0:sync:/sbin:/bin/sync

....

特殊字符‘.*’  .任意*任意个。表示任何个任意字符。匹配到r开头o结尾

[root@wangshaojun ~]# cg 'r.*o' 1.txt
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
syrrrrrrrrronc:x:5:0:sync:/sbin:/bin/sync
halt:x:7:rro0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

.....

特殊字符‘?’ 表示数字0或数字1个?前面的字符

[root@wangshaojun ~]# cg 'r?o' 1.txt
root:x:0:0:root:/root:/bin/bash   //roo中ro匹配一次 o匹配一次
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 .......

cg 'r?o' 1.txt == cg -E 'r?o' 1.txt == egrep --color 'r?o' 1.txt

/////////////////////////////////////////////////////////////////

原文地址:https://www.cnblogs.com/wangshaojun/p/4975828.html