Linux 文本处理三兄弟之--Grep

对于使用Linux系统的管理员来说,系统给我们返回的信息有时候真的是太多了,然而我们往往想要得到的信息仅仅是一部分,所以我们就需要一些编辑工具来对输出的数据流进行过滤。


对grep的介绍以及使用主要从下面几个方向进行:

1.什么是grep?
2.为什么使用grep?
4.如何使用grep?

那么就让我们开始学习grep吧

1.什么是grep?

首先,需要知道 grep 的全称是 Global Regular Expression Print,全局正则表达式匹配打印。
在Linux 系统下,grep 可以算是一种文本的搜索工具,能够使用正则表达式来进行匹配文本,并将匹配到的行进行打印。
那么什么是正则表达式尼?
简单点的理解,正则表达式就是一种使用匹配字符串的公用规则所写成的表达式。

2.为什么使用grep?

使用 grep 的目的就是能够通过使用它能找到我们想要的信息。当然值得一提的就是 grep其实仅仅 GREP 家族中的一个工具,还有类似于egrep,fgrep,zgrep,zegrep,zfgrep 这些工具。

3.如何使用grep?

说了那么多的介绍,现在就让我们开始学习吧!
首先,使用 grep 命令的格式如下:

grep [选项] "模式" [文件]

所以我们一个逐个分析:

一、常用选项:

-E:让 grep 能够匹配到扩展(Extend)的正则表达式。
-i :匹配的时候忽略大小写(Ignore case)。
-v:打印不匹配的,而匹配的不打印(inVert)。
-n:匹配结果打印的时候显示行号。
-w:被匹配的文本只能是单词,而不能是单词中的某一部分。
-c:显示总共有有多少行被匹配到了,而不是显示被匹配到内容。
-o:只显示被模式匹配到的字符串。
--color:将匹配到的内容以颜色高亮显示。
-A #:显示匹配到的字符串所在的行以及其后 # 行(After)。
-B #:显示匹配到的字符串所在的行以及前 # 行(Before)。
-C #:显示匹配到的字符串所在的行以及前后各 # 行。(Contextt)

二、模式

A 直接键入

直接输入要匹配的字符串,推荐这样情况下使用 fgrep(Fast grep)

B 正则表达式(Regular Expression)

a)匹配字符

. :任意的一个字符
[abc] :匹配一个字符,仅匹配在中括号内的字符
[^abc]:匹配一个字符,除了脱字符(^)后面的字符
[0-9] :匹配数字0到9的任意一个字符
系统定义了一些常用的字符集
[[:alpha:]] :匹配任意一个英文字母,<==>[a-zA-Z]
[[:digit:]] :匹配任意一个数字,<==> [0-9]
[[:alnum:]] :匹配任意一个英文字母和数字0-9,<==>[a-zA-Z0-9]
[[:space:]] :匹配任意一个空白字符,例如:空格,Tab等
[[:upper:]]:匹配任意一个大写的英文字母,<==>[A-Z]
[[:lower:]]:匹配任意一个小些的英文字母,<==>[a-z]
[[:punct:]]:匹陪任意一个标点符号
如果想要匹配的就是具有特殊意义的字符,例如:' . ',' ',' [ '等字符,就要对其使用反斜杠进行转义,*就表示匹配

b)匹配次数

{m,n}:匹配前面出现的字符至少 m 次,至多n次
\?:匹配其前面出现的内容0次或1次 等同于{0,1}
* :匹配其前面出现的内容任意次,等同于{0,},因此.* 代表的就是任意字符任意多次

c)位置锚定

^:锚定行首
$:锚定行尾,所以^$用于匹配空白行
\<:锚定单词的词首
\>:锚定单词的词尾
\b:锚定单词,可以是词首也可是词尾,例如:\bword\b就仅仅会匹配到word这个单词

d)分组及引用

(string):将string作为一个整体,可以后向引用
\1:引用第一个左括号及其对应的右括号匹配的内容
\2:引用第二个左括号及其对应的右括号匹配的内容,以此类推。

C 扩展的正则表达式(Extend RE)要使用-E选项。

a):分组及引用

(string):和基本的正则表达式(string)是相同的,引用部分与基本正则表达式相同。

b):选择

statement1|statement2:匹配statement1或者statement2,匹配的是或者号( | )两边的全部,例如:c|Cat,表示匹配的要么是c要么是Cat。
其他的详细的正则表达式学习,我们在这里就不一一阐述了


至此,grep 的一些常用的使用,我们都已经说完了,其实有这么多,还是需要多加练习,将这些融入其中才会完全掌握,当然自己也可以给自己出一些问题然后自己来解决,这样就会有很快的进步,总之,望君坚持✊。

转载于:https://blog.51cto.com/13435633/2240294

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值