目的

熟练使用 grep 和正则表达式的应用。

grep 命令功能:显示模式匹配的行;
正则表达式:英语为 Regular Expression,在代码中常简写为 regex、regexp 或 RE,正则表达式是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式 (规则) 的文本。

前提

可用的 centos7 系统,连接网络。

命令介绍

1、grep 命令:根据指定的匹配模式对文本内容进行搜索

【例 1】查找 /etc/passwd 文件里包含 root 字符串的行

[root@Magedu ~]# grep root /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

【例 2】查找 2.sh 文件里显示不包含 111 字符串的行

[root@Magedu ~]# cat 2.sh 

this is 111 line

this is 222 line

this is 333 line

this is 444 line

this is 555 line

[root@Magedu ~]# grep -v 111 2.sh 

this is 222 line

this is 333 line

this is 444 line

this is 555 line

【例 3】显示 /etc/passwd 文件中以 bash 结尾的行

[root@Magedu ~]# grep  'bash$' /etc/passwd

root:x:0:0:root:/root:/bin/bash

lsj:x:1000:1000:lsj:/home/lsj:/bin/bash

linux:x:1004:1004::/home/linux:/bin/bash

liubei:x:1005:1005::/home/liubei:/bin/bash

zhangfei:x:1006:1006::/home/zhangfei:/bin/bash

guanyu:x:1007:1007::/home/guanyu:/bin/bash

【例 4】找出“ldd /usr/bin/cat”命令的结果中的文件路径

[root@Magedu ~]# ldd /usr/bin/cat | grep -o '/[^[:space:]]\+'

/lib64/libc.so.6

/lib64/ld-linux-x86-64.so.2

【例 5】找出 ifconfig 命令结果中所有 IPv4 地址

[root@Magedu ~]# ifconfig ens33|grep -o "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"

172.18.118.155

255.255.0.0

172.18.255.255

【例 6】将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前面

]# echo welcome to  magedu linux|grep -o "."|sort|uniq -c|sort -nr

      3 e

      3  

      2 u

      2 o

      2 m

      2 l

      1 x

      1 w

      1 t

      1 n

      1 i

      1 g

      1 d

      1 c

      1 a

2、egrep 命令:同 grep 命令,但支持扩展的正则表达式

【例 7】使用 egrep 取出 /etc/rc.d/init.d/functions 路径的目录名

[root@Magedu ~]# echo /etc/rc.d/init.d/functions |egrep -o "^[/].*/"

/etc/rc.d/init.d/

文章来源于网络,侵删