欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

文本过滤工具 (grep)

程序员文章站 2022-07-12 18:58:26
...

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
相关标签: linux