计算机语言工具文Linux

Linux文本三剑客之----grep的使用

2021-08-27  本文已影响0人  莫讠

awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

1、grep

1.1 什么是grep和egrep

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红)。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

1.2 使用grep

1.2.1 命令格式

grep [option] pattern file

1.2.2 命令功能

用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。

1.2.3 命令参数

常用参数已加粗

1.3 grep实战演示

对于本次示例的test

cat test 
aaa
bbbb
aaabbbb
AAAAaaaa
BBBBAASDADDSAaabb
cat test | grep -A2 b 
bbbb
aaabbbb
AAAAaaaa
BBBBAASDADDSAaabb

查找匹配"AAA"或者"bbb"的字段

$ cat test | grep -e AAA -e bbb
bbbb
aaabbbb
AAAAaaaa

反向匹配,查找非这段匹配的字符

$ cat test | grep -v BA
aaa
bbbb
aaabbbb
AAAAaaaa

显示匹配到的行数

$ cat test | grep -c aa
4

2、正则表达式

2.1 认识正则

(1)介绍

正则表达式应用广泛,在绝大多数的编程语言都可以完美应用,在Linux中,也有着极大的用处。

使用正则表达式,可以有效的筛选出需要的文本,然后结合相应的支持的工具或语言,完成任务需求。

在本篇博客中,我们使用grep/egrep来完成对正则表达式的调用

(2)正则表达式类型

正则表达式可以使用正则表达式引擎实现,正则表达式引擎是解释正则表达式模式并使用这些模式匹配文本的基础软件。

在Linux中,常用的正则表达式有:

2.2 基本正则表达式

2.2.1 匹配字符

(1)格式

(2)演示

$ cat test
aaa
bbbb
aaabbbb
AAAAaaaa
BBBBAASDADDSAaabb
abc
123
//[

.匹配任意单个字符,不能匹配空行

$ grep . test 
aaa
bbbb
aaabbbb
AAAAaaaa
BBBBAASDADDSAaabb
abc
123
//[

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

$ grep [a/] test 
aaa
aaabbbb
AAAAaaaa
BBBBAASDADDSAaabb
abc
//[

[^]取反

$ grep [^abc] test
AAAAaaaa
BBBBAASDADDSAaabb
123
//[

2.2.2 配置次数

(1)格式

(2) 演示

$ cat test 
aaa
bbbb
aaabbbb
AAAAaaaa
BBBBAASDADDSAaabb
abc
123
//[
ggle
google
ggole
google
gooooooooooooooooooooooogle

匹配前面的字符任意次,包括0次

grep "g[o]*gle" test 
ggle
google
google
gooooooooooooooooooooooogle

.* 任意长度的任意字符,不包括0次

 grep "g[o].*gle" test 
google
google
gooooooooooooooooooooooogle

? 匹配其前面的字符0 或 1次

grep "g[o]\?gle" test 
ggle

2.2.3 位置锚定:定位出现的位置

(1)格式

(2)演示

$ cat test 
aaa
bbbb
aaabbbb
AAAAaaaa
BBBBAASDADDSAaabb
abc
123
//[
ggle
google
ggole
google
gooooooooooooooooooooooogle

^行首锚定,匹配最左边的字符

grep ^a test
aaa
aaabbbb
abc

$行尾锚定,匹配最右边的字符

grep b$ test 
bbbb
aaabbbb
BBBBAASDADDSAaabb

匹配以a为首,b为结尾的语段

$ grep "^a.*b$" test 
aaabbbb

参考资料来源:https://www.cnblogs.com/along21/p/10366886.html

上一篇 下一篇

猜你喜欢

热点阅读