文本内容查询
Posted tomyliu1980
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本内容查询相关的知识,希望对你有一定的参考价值。
命令: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:匹配内容高亮,再次查询时不高亮显示
以上是关于文本内容查询的主要内容,如果未能解决你的问题,请参考以下文章
如何访问 Gatsby 中“file”或“allFiles”GraphQL 查询返回的文件的文本内容?
JSP页面中在文本框中输入内容,动态从数据库模糊查询显示到下拉框中。
JSP页面中在文本框中输入内容,动态从数据库模糊查询显示到下拉框中!你这个可以给发一下吗?