grep 通过关键字过滤文本内容
说明
grep 通过关键字过滤文本内容
grep的过滤以行为单位,只要这一行中包含该关键字,则grep选取这一行,而不是单独选中这一个关键字
grep 支持:BREs、EREs、PREs 正则表达式
grep 指令后不跟任何参数,则表示要使用 ”BREs“
grep 指令后跟 ”-E" 参数,则表示要使用 “EREs“
grep 指令后跟 “-P" 参数,则表示要使用 “PREs"
方法
查找内容可以 用 字符、正则表达式
# 基本语法
grep [选项] 查找内容 源文件
# 选项
-i 忽略关键字的大小写
-n 显示关键字出现的行号
-r 递归查找 子目录中的文件
-l 只打印匹配的文件名
-c 只打印匹配的行数
-P 使用正则表达式匹配 数字 的时候 要加上
-o 仅显示查找到的关键字
-v 对关键字取反,也就是除了该关键字之外的所有行
-q grep的静默模式,也就是不在屏幕上输出内容
-AX 显示过滤关键字的后x行内容
-BX 显示过滤关键字的前x行内容
-CX 显示过滤关键字的前后x行内容
--color=auto 给过滤的关键字显示高亮的颜色,在RHEL中已经默认设置
举例
在单个文件内 查找内容(显示行号)
# 案例:在 456.txt 文件中,查找 "zhon" 所在行,并且显示行号
[root@hn ~]# grep -n zhon 456.txt
29:zhong
[root@hn ~]# grep -n Sec 1.txt
1:Sec解决方案,在软件定义安全领域引入智能理念,为数字化企业构建全新的智能防护体系。
3:华为HiSec解决方案,引入针对虚拟化场景的安全控制器SecoManager,可协同软硬件的安全组件实现跨多云、多分支的统一安全业务编排与管理,保证全网策略一致性。
在整个文件夹内 查找内容(显示行号)
# 案例:在 /root 目录中,查找 "zhong" 所在行,并且显示行号
[root@hn ~]# grep -r -n zhong /root
/root/1111.txt:10:zhong
/root/456.txt:29:zhong
/root/.viminfo:103:? \<zhong\>
/root/.viminfo:104:|2,1,1713173059,,"\\<zhong\\>"
配合管道符 | 使用
[root@hn ~]# ll | grep pass
-rw-r--r-- 1 root root 15 Apr 25 11:29 passwd1.txt
-rw-r--r-- 1 root root 30 Apr 25 11:28 passwd.txt
[root@hn ~]# cat 1.txt | grep -n 智能理念
1:Sec解决方案,在软件定义安全领域引入智能理念,为数字化企业构建全新的智能防护体系。
[root@hn ~]#
使用正则匹配
写正则的时候,要用 ''
引号,不然会有时候会出问题
[root@hn ~]# cat 456.txt | grep '[^1]'
22
3asc
4abc
5
6000addec:
7
[root@hn ~]# grep -P '\d{2}' 456.txt
22
6000addec:
[root@hn ~]#