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