文本过滤工具 (grep)

grep命令:
grep是一种强大的文本搜索工具,基于用户指定的“”,正则表达式元字符编写出来的过滤条件”对目标文件逐行进行匹配检查,打印匹配到的行,默认打印到终端窗口。
正则表达式:由一类特殊的字符以及文本字符所编写的模式,并不代表字面含义表达控制或者通配的功能

 用法:
 grep [OPTIONS] PATTERN [FILE...]
 grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
–color=auto 高亮显示匹配到的文本
-i 忽略字符大小写
-n 显示行号
-E 支持使用扩展正则表达式
-o 打印匹配到的行
-v 显示不能被匹配到的行
-A# 后几行
-B # 前几行
-C # 前后各几行
[root@localhost ~]# grep --color=auto "UUID" /etc/fstab
UUID=05f664d6-53c8-4e53-9291-b1321936d79c /                       ext4    defaults        1 1
UUID=758db803-7a5d-493b-be16-68ca2d050d55 /boot                   ext4    defaults        1 2
UUID=93fc053e-b9a0-4439-a822-3575ee7f3f3d swap                    swap    defaults        0 0

匹配次数:

* 匹配其前面的字符任意次。0次,1次或者多次
.* 匹配任意长度的任意字符
\? 匹配其掐面的字符0次或者1次,最多一次
\+ 匹配其前面的字符1次或者多次,至少一次
\{m\} 匹配其前面的字符m次
\{m,n\} 匹配其前面的字符至少m次,至多n次
\{0,n\} 至多n次
\{m,\} 至少m次
实例:
[root@localhost tmp]# cat file
xxxxxy
xyxyxyxyxy
xyyyyxsakfxy
xakfafhlkashfyasbx
asflaklkfhxy
[root@localhost tmp]# grep --color=auto(高量显示,找到的字符用其他颜色标出) x*y file(前面的x出现0次或者多次y出现一次)
xxxxxy
xyxyxyxyxy
xyyyyxsakfxy
xakfafhlkashfyasbx
asflaklkfhxy
[root@localhost tmp]# grep "x\{2,4\}y" file(记得加引号)
xxxxxy

位置锚定:

^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^ $ 空白行
^pattern$ 用pattern来匹配整行
\< 词首锚定,用于单词的左侧
\> 词尾锚定,用于单词的右侧
\<pattern\> 锚定为一个pattern
1.显示/etc/passwd文件中不以/bin/bash结尾的行
[root@localhost tmp]# grep  -v '/bin/bash&' /etc/passwd
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
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
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
2.显示/etc/passwd中的两位数或者三位数
[root@localhost tmp]# grep '\<[[:digit:]]\{2,3\}\>' /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
3.找出 netstat -tan 命令结果中以LISTEN后跟一个或者多个空白字符结尾的行
[root@localhost tmp]# netstat -tan | grep "LISTEN[[:space:]]\{1,\}$"
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 ::1:25                      :::*                        LISTEN

分组:

\(\) 分组,将一个或者多个字符捆绑在一起当作一个整体处理

引用:

\1 模式从左侧起,第一个左括号与之匹配的右括号之间模式所匹配到的字符
\2 模式从左侧起,第二个左括号与之匹配的右括号之间模式所匹配到的字符
# 模式从左侧起,第#个左括号与之匹配的右括号之间模式所匹配到的字符
实例:
[root@localhost tmp]# cat file
He loves his lover.
He likes his lover.
She likes her liker.
She loves her liker.
[root@localhost tmp]# grep "\(h\).*\(l..e\).*\1.*\2" file
She likes her liker.

找出ifconfig命令中的IP地址?

[root@localhost tmp]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:B6:F8:F4
          inet addr:192.168.176.128  Bcast:192.168.176.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb6:f8f4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3493 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1659 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:283560 (276.9 KiB)  TX bytes:183236 (178.9 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
[root@localhost tmp]# ifconfig | grep  "\(192\).*[[:digit:]]$" | cut -d ":" -f 2 | cut -d " " -f 1
192.168.176.128

猜你喜欢

转载自blog.csdn.net/qq_44944641/article/details/104710642