linux中的grep和egrep命令,Linux grep和egrep命令

本文详细介绍了Linux中的grep命令,包括它的基本用法、选项以及如何配合正则表达式进行文本搜索。egrep实际上是grep的扩展,支持更复杂的正则表达式。通过实例演示了grep的各种功能,如反向匹配、只显示匹配部分、不区分大小写等。同时,文章还讲解了正则表达式的元字符、次数匹配、位置锚定等概念,并给出了多个示例来展示如何使用这些概念进行文本匹配。
摘要由CSDN通过智能技术生成

在Linux中,grep是一个非常强大的文本搜索工具,它可以根据用户指定的文本搜索模式对目标文件进行逐行的搜索,然后将被模式匹配到的用户所需要的信息显示出来;

在Linux中,grep是一个非常强大的文本搜索工具,它可以根据用户指定的文本搜索模式对目标文件进行逐行的搜索,然后将被模式匹配到的用户所需要的信息显示出来;那么,egrep呢?从字母组合上看,二者很相像,那么事实上呢?下面我们就共同来看一下吧!

grep

grep全程是Global Regular Expression Print,意思是使用正则表达式搜索文本,并把匹配的行打印出来。如上所说,grep是一个非常强大的文本搜索工具,那么它到底是如何实现的呢?下面就来看看grep的具体用法。

格式

grep [option] 'PATTERN' file,.

[root@station86 ~]# grep 'root' /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

显示/etc/passwd中含有root的行

选项:

-v:反向匹配,既显示不能被模式匹配到的行;

[root@station86 ~]# grep -v 'root' /var/log/secure

Feb 17 14:30:52 station86 sshd[1716]: Received signal 15; terminating.

Feb 17 14:30:52 station86 sshd[1992]: Exiting on signal 15

Feb 17 14:31:56 station86 sshd[1814]: Server listening on 0.0.0.0 port 22.

由于内容较多,这里只贴出了一小段

-o:仅显示被模式匹配到的字串,而非整行;

[root@station86 ~]# grep -o 'root' /etc/passwd

root

root

root

root

-i:不区分字符大小写;

[root@station86 ~]# grep -i "^s" /proc/meminfo

SwapCached:            0 kB

SwapTotal:       2097144 kB

SwapFree:        2097144 kB

Shmem:               244 kB

Slab:              37348 kB

SReclaimable:      12140 kB

SUnreclaim:        25208 kB

显示行首为S|s的行;

-E:支持扩展的正则表达式

grep -E就相当于egrep,具体的实例我们会在下面讲到;

-A #:显示被模式匹配到的行及下面的#行;

[root@station86 ~]# grep -A1 'root' /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

--

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

-B #:显示被模式匹配到的及上面的#行;

[root@station86 ~]# grep -B1 'root' /etc/passwd

root:x:0:0:root:/root:/bin/bash

--

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

-C #:上下各显示#行

[root@station86 ~]# grep -C1 'root' /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

--

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

除此之外,grep还可以配合正则表达式一起使用,正则表达式又被称为正规表示法、常规表示法。既然grep可以配合正则表达式一起使用,那么,正则表达式的主要参数有哪些呢?

元字符

字符匹配:

.:匹配任意单个字符

[]:指定范围内的任意单个字符

[0-9]|[[:digit:]]:数字

[a-z]|[[:lower:]]:小写字母

[A-Z]|[[:upper:]]:大写字母

[[alpha]]:所有字母,不区分大小写;

[[:alnum:]]:所有字母和数字

[[:space:]]:所有带空格字符的

[[:punct:]]:所有含有特殊字符的

[^]:指定范围外的任意单个字符

次数匹配:用来指定匹配其前面的字符的次数。

*:任意次数

.*:匹配任意长度的任意字符

\?:0次或1次,表示前面的字符可有可无

在正则表达式中,匹配所遵循的是贪婪模式,既是尽可能长的去匹配字符;

\{m\}:匹配m次

\{m,n\}:至少m,至多n

\{m,}:至少m次

\{0,n\}:至多n次

位置锚定:用于指定字符出现的位置

^:用于锚定行首,要求这个字符必须出现在行首

^char:说明char必须出现在行首

$:用于锚定行尾

char$:一定以这个字符结尾的

^$:查找一个文件中所出现的空白行

\

char\>:锚定词尾,char\b

\b:可以代表词首词尾的符号

分组元字符:

\(\):一个字符串可以出现的次数

\(ab\)*:即行中ab可以出现的次数

引用:

\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹配到的内容

\2:

\3:...

\(a.b\)xy\1:a6bxya6b,既是引用第一对括号内所匹配的内容,即括号内为a6b,那么\1引用的也是a6b,和括号内的内容完全一样

[root@station86 ~]# grep ^user.*bash$ /etc/passwd

user2:x:505:505::/home/user2:/bin/bash

user10:x:506:506::/home/user10:/bin/bash

user4:x:507:507::/home/user4:/bin/bash

user5:x:508:508::/home/myuser:/bin/bash

user6:x:509:509:备注:/home/user6:/bin/bash

匹配/etc/passwd中行首为user行尾为bash,中间跟了任意次数任意字符的行

创建一个文本文件juli,里面内容如下:

xyz

x yz

x12yz

x2yz

x,yz

Xyz

XYZ

1xyz

xyz1

匹配juli中行首为数字的行

[root@station86 ~]# grep ^[0-9] juli

1xyz

匹配juli中行首为数字的行,和第一个例子效果一样,只是表达式不同

[root@station86 ~]# grep ^[[:digit:]] juli

1xyz

匹配juli中行首为小写字母,后面跟了任意次数的任意字符的行

[root@station86 ~]# grep ^[[:lower:]].* juli

xyz

x yz

x12yz

x2yz

x,yz

xyz

匹配juli中以yz结尾,x可有可无的行

[root@station86 ~]# grep 'x\?yz' juli

xyz

x yz

x12yz

x2yz

x,yz

Xyz

1xyz

xyz1

匹配juli中以x开头以z结尾的行

[root@station86 ~]# grep '\' juli

xyz

匹配juli中x和yz中间有一个空格符的行

[root@station86 ~]# grep 'x[[:space:]]yz' juli

x yz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值