Linux的通配符以及grep的使用
一、Linux的通配符
###1.1 基本通配符
符号 | 作用 |
---|---|
* | 匹配0次或者多次(匹配任意长度的任意字符) |
? | 匹配任意对单个字符(也可理解为一个占位符) |
. | 匹配出换行符外的任意字符 |
[] | 匹配指定范围内的单个字符 |
[^] | 匹配指定范围外的单个字符 |
###1.2 通配符的扩展说明
基本 | 扩展 | 意义 |
---|---|---|
[a-z] | [[:lower:]] | 所有小写字母 |
[A-Z] | [[:upper:]] | 所有大写字母 |
[0-9] | [[:digit:]] | 所有数字 |
[[:space:]] | 所有空白字符 | |
[[:punct:]] | 所有标点符号 | |
[a-z A-Z] | [[:alpha:]] | 所有字母 |
[a-z A-Z 0-9] | [[:alnum:]] | 所有字母和数字 |
二、Linux的grep指令
2.1grep指令的作用
过滤查找,通常与管道符“|”和通配符一起配合使用
2.2grep指令的语法
grep 【选项】 查找 内容 查找的文件目录
2.3grep指令的基本参数
参数 | 作用 |
---|---|
-i | 忽略字母大小写 |
-n | 显示行号并打印 |
-v | 反向过滤查找内容 |
-r | 目录递归查找 |
-w | 精确匹配整个单词 |
-o | 仅输出匹配到 的内容 |
-A | 打印匹配到行之后的多少行 其后加数字 |
-B | 打印匹配到行之前的多少行 其后加数字 |
-C | 打印匹配到行之前和之后的多少行 其后加数字 |
-E | 代表开启正则表达式的扩展模式 |
2.4grep指令的运用实例
-
显示/proc/meminfo 文件中以大小 s 开头的行
[root@guowang1 ~]# grep -i '^s' /proc/meminfo SwapCached: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB Shmem: 7800 kB Slab: 60560 kB SReclaimable: 24168 kB SUnreclaim: 36392 kB
-
显示/etc/passwd 文件中不以/bin/bash 结尾的行
[root@guowang1 ~]# grep '/bin/bash$' /etc/passwd root:x:0:0:root:/root:/bin/bash guowang:x:1111:1111::/home/guowang:/bin/bash guo:x:1112:1112::/home/guo:/bin/bash
-
使用正则命令取出本机 ens33 网卡的 IPv4 地址
[root@guowang1 ~]# ip a | grep 'ens33' | grep inet | grep -Eo '([0-9]{1,3}.){1,3}[0-9]{1,3}/' | grep -Eo '([0-9]{1,3}.){1,3}[0-9]{1,3}' 192.168.174.145
-
显示出/etc/passwd 文件中所有以 root 开头的行
[root@guowang1 ~]# grep '^root' /etc/passwd root:x:0:0:root:/root:/bin/bash
-
输出/etc/passwd 文件中任何包含 bash 的所有行,还要输出紧接着这行的上下各两行的内容
[root@guowang1 ~]# grep -C 2 '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 -- sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin guowang:x:1111:1111::/home/guowang:/bin/bash guo:x:1112:1112::/home/guo:/bin/bash
-
显示出/etc/passwd 文件中那些行含有 root,并将行号一块输出。
[root@guowang1 ~]# grep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin [root@guowang1 ~]# grep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin [root@guowang1 ~]# grep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin [root@guowang1 ~]# grep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin
-
显示/etc/passwd 中以 nologin 结尾的行;
[root@guowang1 ~]# grep 'nologin$' /etc/passwd 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 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:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin
-
显示/etc/passwd 中包含了:一个数字:(即两个冒号中间一个数字)的行;
[root@guowang1 ~]# grep ':[0-9]:' /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 operator:x:11:0:operator:/root:/sbin/nologin