Shell 编程(四):文本三剑客之 Grep

2023-02-17 17:09:50 浏览数 (2)

grep

grep语法格式

方法

命令

方法一

grep [option] [pattern] [ file1,file2...]

方法二

command | grep [option] [pattern]

选项

选项

含义

-v

不显示匹配行信息

-i

搜索时忽略大小写

-n

显示行号

-r

递归搜索

-E

支持扩展正则表达式

-e

不支持扩展正则表达式

-F

不按正则表达式匹配,按照字符串字面意思匹配

-c

只输出匹配行的数量,不显示具体内容

-w

匹配整词

-x

匹配整行

-l

只列出匹配的文件名,不显示具体匹配行内容

例子

准备文件 cat /etc/passwd > ./passwd.txt

  1. 找普通字符 root,不区分大小写
  2. 统计 password.txt 文本中,有多少行 root 有关的内容
  3. 找出所有允许登录的用户,解释器是 /bin/bash 的行
  4. 找出不允许登录的用户
  5. 找出 root 开头的行
  6. 过滤出除 bin 开头的行,显示行号
  7. 找出系统上 root、yu、nobody 用户的信息
  8. 查找当前目录下有 root 的所有文件
代码语言:javascript复制
# 找普通字符root,不区分大小写
> grep -ni root passwd.txt 
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

# 统计 password.txt 文本中,有多少行 root 有关的内容
> grep -c root passwd.txt 
2

# 找出所有允许登录的用户,解释器是/bin/bash的行
> grep -n "/bin/bash$" passwd.txt 
1:root:x:0:0:root:/root:/bin/bash

# 找出不允许登录的用户
> grep -n 'nologin$' passwd.txt 
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

# 找出root开头的行
> grep -n '^root' passwd.txt 
1:root:x:0:0:root:/root:/bin/bash

# 过滤出除bin开头的行,显示行号
> grep -nvE '^bin' passwd.txt 
1:root:x:0:0:root:/root:/bin/bash
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin

# 找出系统上root、yu、nobody用户的信息
> grep -E '^<(root|yu|nobody)>' passwd.txt 
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin

# 查找当前目录下有 root 的所有文件
> grep -nr root
grep.sh:5:grep -c root passwd.txt
password.txt:1:root:x:0:0:root:/root:/bin/bash
password.txt:10:operator:x:11:0:operator:/root:/sbin/nologin

0 人点赞