Linux中grep详解

一、grep基本介绍

全拼:Global search REgular expression and Print out the line.

作用:文本搜索工具,根据用户指定的"模式(过滤条件)"对目标文本逐行进行匹配检查,打印匹配到的行.

模式:由正则表达式的元字符及文本字符所编写出的过滤条件﹔

grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令

grep命令里的匹配模式就是你想要找的东西,可以是普通的文字符号,也可以是正则表达式

二、正则表达式grep实践

首先先看一下这个测试文件的内容吧

2.1、输出以 I 开头的行(不区分大小写)

注: 这里的-i代表不区分大小写, -n代表显示匹配行和行号

2.2、输出以.结尾的行

注: 因为.在这里有着特殊含义, 所以要用\转义一下, 如果不加转义字符的话, grep就会把它当做正则表达式来处理(.代表的含义是匹配任意一个字符)

2.3、$符号

  • 注意在Linux平台下, 所有文件的结尾都有一个$符
  • 可以利用cat -A 查看文件

2.4、^$(代表空行的意思)组合符

找出文件的空行, 以及行号

2.5、.点符号

"."点表示任意一个字符, 有且只有一个, 不包含空行

2.6、*符号

"*"表示找出前一个字符0次或一次以上

找出文件中i出现0次或多次的行和行号

2.7、.*组合符

".*"表示所有内容, 包括空行

2.8、^.*t符 (含义: 以任意内容开头, 直到t结束)

2.9、[abc]中括号

中括号表达式,[abc]表示匹配中括号中任意一个字符, a或b或c,常见的形式如下;

  • a-z\]匹配所有小写单个字母\[A-Z\]匹配所有单个大写字母

  • 0-9\]匹配所有单个数字

匹配abc字符中的任意一个,得到它的行数和行号

2.10、grep的参数-o

使用"-o"选项, 可以值显示被匹配到的关键字, 而不是讲整行的内容都输出.

显示出文章中有多少行有a

"-c"只统计匹配的行数

2.11、[^abc]中括号中去反

\^abc\]或\[\^a-c\]这样的命令, "\^"符号在中括号中第一位表示排除, 就是排除字符a,b,c 注: **出现再中括号里的尖角号表示取反** ![](https://file.jishuzhan.net/article/1703484546042826753/e010a133f530497faa09279e5e3f7ddd.png) # 三、扩展正则表达式grep实践 **此处使用grep -E进行实践扩展正则, egrep官网已经弃用了** ### 3.1、+号 **+号表示匹配前一个字符1一次或多次,必须使用grep-E扩展正则** ![](https://file.jishuzhan.net/article/1703484546042826753/21ce9d521f1848589bd3aacb32798cda.png) ### 3.2、?符 **匹配前一个字符0次或1次** 找出文件中包含gd或者god的行 ![](https://file.jishuzhan.net/article/1703484546042826753/ab083f58d1dc43ea89c4be443d677306.png) ### 3.3、\|符 **竖线\|再正则中是或者的意思** **找出opt目录中txt结尾的文件, 其名字中包含a或者e, 不区分大小写(-i)** ![](https://file.jishuzhan.net/article/1703484546042826753/1429b82f27764da9b5afaa223a249116.png) ### 3.4、()小括号 **将一个或多个字符捆绑在一起, 当作一个整体进行处理** ![](https://file.jishuzhan.net/article/1703484546042826753/f4337c8dbd9d41d0982aaec6334bb4d0.png) ### 3.5、{n,m}匹配次数 **{n,m}:匹配前一个字符至少n次, 最多m次** **{n,}: 匹配前一个字符至少n次, 没有上限** **{,m}: 匹配前一个字符最多m次,可以没有** **重复前一个字符各种次数, 可以通过-o参数显示明确的匹配过程** ![](https://file.jishuzhan.net/article/1703484546042826753/2c21cd9f7aa24025b484884c5856d26e.png)

相关推荐
正在努力的小河38 分钟前
Linux设备树简介
linux·运维·服务器
荣光波比39 分钟前
Linux(十一)——LVM磁盘配额整理
linux·运维·云计算
LLLLYYYRRRRRTT1 小时前
WordPress (LNMP 架构) 一键部署 Playbook
linux·架构·ansible·mariadb
轻松Ai享生活1 小时前
crash 进程分析流程图
linux
大路谈数字化3 小时前
Centos中内存CPU硬盘的查询
linux·运维·centos
luoqice4 小时前
linux下查看 UDP Server 端口的启用情况
linux
倔强的石头_5 小时前
【Linux指南】动静态库与链接机制:从原理到实践
linux
赏点剩饭7785 小时前
linux中的hostpath卷、nfs卷以及静态持久卷的区别
linux·运维·服务器
神鸟云5 小时前
DELL服务器 R系列 IPMI的配置
linux·运维·服务器·网络·边缘计算·pcdn
herderl5 小时前
**僵尸进程(Zombie Process)** 和**孤儿进程(Orphan Process)**
linux·运维·服务器·网络·网络协议