grep 与条件_Linux三剑客系列之grep命令全面解析,一篇文章就够了

一.正则表达式

1.什么是正则表达式 ?

一个正则表达式就是描述了一个字符串集合的方式。正则表达式的表示就是一些特殊符号的组合,而每个符号代表着一些具体的意思。符合的组合就定义了一套规则和方法,其主要作用就是从大量文本从匹配出符合条件行。

2.正则表达式的使用场景

在Linux中,正则表达式的主要使用场景就是文本处理三剑客。grep,sed,awk .除此之外,vi指令也支持正则表达式。

3.正则表达式字符表示

在正则表达式中,又可以分为基本正则表达式和扩展正则表达式 。其主要区别在于:

  • 基本正则表达式只认识元字符,其元字符主要包括:^ $ . [] * ,具体含义见下表格
  • 扩展正则表达式有添加了() {} ? + | 等符号

以下为各个元字符的含义

bdec230dc7b492e6f1baeea5ce57c5c1.png

扩展正则中支持的字符

4d231ae0ac3ff4d1633f5ff70aadc050.png

预定义字符类

56ebe2c06cb4b987fad7c5deaa4665ce.png

4.它们之间的区别

在上面我们提到正则包括基础正则和扩展正则,但是它们有什么区别呢?在什么地方使用呢 ? 接下来我们主要说明在Linux 三剑客中的不同(grep,sed,awk)

  • grep : 在grep中,如果只是使用grep ,那只能使用原字符的正则以及预定义字符类,而若想使用扩展正则中包含的字符,就必须在grep后加参数-E 。
  • sed :若要使用而扩展正则中包含的字符,就必须在sed后加参数-r。

二.grep命令

作用:

  • 用于打印匹配给定模式的行

语法:

grep [options] PATTERN [FILE...] ​ grep [options] [-e PATTERN | -f FILE] [FILE...]

说明:

grep指令用于搜索所给定的模式(PATTERN )的FILE 文件里的内容 ,如果从文件内容里找到了该模式的文件内容,grep会把匹配的该行显示出来。若不指定任何文件,或给的文件名为- , 则grep会从标准输入读取内容。

 另外,也可以使用两个变种程序 egrep 和 fgrep 。 Egrep 与 grep -E 相同。 Fgrep 与 grep -F 相同。

选项:options

说明

重点

虽然在上面我们可以看到,grep中有很多选项,但是在工作中,大多数的选项是用不到的,这里我们划一下重点。

常用参数

2d19d5a2666617287118fc8661938f70.png

实例

使用到文件info,通过grep来进行过滤,info的文件内容如下:

6ba83d9d02f9506cd54730adeaac5147.png
  1. 查找文件info中包含ccc的内容并打印行数
grep -n "ccc" info

a802657d1e00091dff85f8886fd3e8a4.png

2. 查找文件info中包含ggg且忽略大小写的字符并打印,

grep -i "ggg" info

a31497c9a273f5817767bc8cba2741b9.png

3.过滤掉含有ccc的行

grep -v "ccc" info

3433ef5cfb525f44df9887af6b921c9c.png

4. 查找包含ddd,eee,fff的行(注意:以下匹配用到正则)

grep -E "ddd|eee|fff" info

5f916c5b044cdebf3830bc647e7b070c.png

5. 查找以c开头的行

grep ^c info

4475a7335b820f1475ec65d1f44779b2.png

6.查找以ccx开头且结尾的行

grep ^ccx$ info

457094f23ca64e98bc090b7f1865f559.png

7. 查找d字符前可以是任意字符的行

grep .d info

9ed5c35a0f7c426aacc7a125632872ba.png

8.查找包含一个或多个d字符的行

grep -E d{1} info

33636d37d339712c4b565923724b8f5a.png

9. 显示包含a,b,c的字符的行 ; 显示不包含a,b,c字符的行

包含:grep -i ^[abc] info
不包含: grep -i [^abc] info (是全部字符不包含a或b或c)

bf71bfbd07682e01cc0b0bff8c51a9c8.png

10. 显示包含一个或多个含有a字符的行

grep -E a+ info

b2028926bc03a60b2c1a8c3ad0f411ee.png

11. 查找以cc开头且包含c,x,ld字符的行

grep -E "cc(c|x|ld)" info

45c72d348dccfeec8496ff22dc6bee22.png

12. 查找文件中所有的大写字符

grep [[:upper:]] info

40fdaf13d8fcbe36821898160d6ae874.png

13. 匹配任意一个字母和数字字符

grep [[:alnum:]] info

cfcd65f78abdeb7d5bf964b20984b773.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值