文本内容查询

历览千载书,时时见遗烈。这篇文章主要讲述文本内容查询相关的知识,希望能为你提供帮助。
命令:grep,egrep,fgrep
在实际工作中,我们会对大量数据进行分析,时间有限,这时,我们就要使用文本查询功能,在大文本中查找是否有指定条件的文本内容。这时就需要用到文本查询工具。Linux常用的文本查询工具有:grep,egrep,fgrep。
它们的功能相近,而且可以相互替代。文本查询就需要了解正则表达式。熟练掌握正则表达式,你就可以快速找到你需要查询的内容。正则表达式分为两种:
一、基本正则表达式
1、字符匹配

序号
符号
释义
1
.
单个任意字符
2
[]
单个指定范围内的任意字符,指定范围放在中括号中间。
a-c:小写字母a到c
A-C:大写字母A到C
0-9:数字0到9
[:lower:]:任意小写字母
[:upper:]:任意大写字母
[:alpha:]:任意字母,包括大写,小写
[:digit:]:任意数字,0-9
【文本内容查询】[:alnum:]:任意字母或数字
[:punct:]:任意非字母符号
[:xdigit:]:任意十六进制数字,包含0-9,a-f,A-F
也可以把范围直接相连,表示两个范围内的值都可以取,比如:a-c[:upper:]就表示可以取a到c和大写字母中的任意一个字符。
3
[^]
在指定范围前加^,表示指定范围外的任意字符


2、匹配次数,使用匹配次数符号,表示其前的字符会重复的次数
序号
符号
释义
1
*
任意次数,包括0次
2
\\?
0次或1次
3
\\+
至少1次
4
\\{m\\}
m次
5
\\{m,n\\}
最少m次,最多n次
6
\\{m,\\}
最少m次
7
\\{0,n\\}
最多n次
3、位置锚定,表示所在位置
序号
符号
释义
1
^
行首,在行的最开始
2
$
行尾,在行的最后面
3
\\<
词首,在单词的最开始,表示在左边没有字符,或着是非字母字符,但注意,如果跟在.后会失效
4
\\>
词尾,在单词的结束位置,表示在其右侧没有字符,或者是非字母字符,但注意,如果后面跟了.则会失效
5
\\b
词首或词尾,如果在字母的左侧则表示词首,右侧则表示词尾
4、分组及引用
分组,把一段正则表达式放在一起,当一个对象使用,分组方法就是用\\(和\\)把正则表达式扩起来。
引用,就是在分组后用\\数字表示和对应的分组正则表达式匹配得到的内容一致,\\1表示第一组,\\2表示第2组,依次类推。
二、扩充正则表达式
1、字符匹配
序号
符号
释义
1
.
单个任意字符
2
[]
单个指定范围内的任意字符,指定范围放在中括号中间。
a-c:小写字母a到c
A-C:大写字母A到C
0-9:数字0到9
[:lower:]:任意小写字母
[:upper:]:任意大写字母
[:alpha:]:任意字母,包括大写,小写
[:digit:]:任意数字,0-9
[:alnum:]:任意字母或数字
[:punct:]:任意非字母符号
[:xdigit:]:任意十六进制数字,包含0-9,a-f,A-F
也可以把范围直接相连,表示两个范围内的值都可以取,比如:a-c[:upper:]就表示可以取a到c和大写字母中的任意一个字符。
3
[^]
在指定范围前加^,表示指定范围外的任意字符
2、匹配次数
序号
符号
释义
1
*
任意次数,包括0次
2

0次或1次
3
+
至少1次
4
{m}
m次
5
{m,n}
最少m次,最多n次
6
{m,}
最少m次
7
{0,n}
最多n次
3、位置锚定
序号
符号
释义
1
^
行首,在行的最开始
2
$
行尾,在行的最后面
3
\\<
词首,在单词的最开始,表示在左边没有字符,或着是非字母字符,但注意,如果跟在.后会失效
4
\\>
词尾,在单词的结束位置,表示在其右侧没有字符,或者是非字母字符,但注意,如果后面跟了.则会失效
4、分组及引用
分组:()
引用:\\数字
查询命令格式:grep|egrep|fgrep [参数] "表达式" [文件]
其中grep默认支持基本正则表达式,egrep:扩充正则表达式,fgrep:不支持正则表达式,但可以通过参数来修改。
-E:扩充正则表达式
-G:基本正则表达式
-F:不支持正则表达式
还有以下常用参数
-i:忽略大小写
-o:仅返回匹配的部分
-v:反向匹配,返回不能匹配的行
-q:静默模式,不返回内容,但运行结果会有值,有匹配文本就返回0,否则返回1
-A[ ]m:中间可以有空格,也可以没有,返回匹配的行以及匹配行后m行
-B[ ]m:返回匹配行前m行以及匹配的行
-C[ ]m: 返回匹配行前m行、匹配行以及匹配后m行
--color=VALUE:改变返回内容的配色方案,取值可以是:never:不高亮显示、always:匹配内容高亮,再次查询时依然高亮、auto:匹配内容高亮,再次查询时不高亮显示

    推荐阅读