Shell 编程(四):文本三剑客之 Grep
- 陈大剩
- 2023-01-27 23:21:22
- 1024
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
- 找普通字符 root,不区分大小写
- 统计 password.txt 文本中,有多少行 root 有关的内容
- 找出所有允许登录的用户,解释器是 /bin/bash 的行
- 找出不允许登录的用户
- 找出 root 开头的行
- 过滤出除 bin 开头的行,显示行号
- 找出系统上 root、yu、nobody 用户的信息
- 查找当前目录下有 root 的所有文件
# 找普通字符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)