Bootstrap

Linux的通配符以及grep的使用

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
    
    
;