文本处理三剑客之grep
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本处理三剑客之grep相关的知识,希望对你有一定的参考价值。
grep系:
grep:Global search Regular Expression and Print out the line.
利用正则表达式进行全局搜索并将匹配到的行显示出来;
格式:
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
PATTERN:过滤匹配条件,是由没有特殊意义的文本字符或者是正则表达式元字符组成;
正则表达式的元字符:会被正则表达式处理引擎解释为特殊含义的字符;
pcre:正则表达式处理引擎,prel语言的正在表达式引擎;
正在表达式的元字符:
基本的正则表达式元字符:BRE
字符匹配类:
.:匹配任意单个字符;
[]:匹配任意指定范围内的单个字符;
[^]:匹配任意指定范围以外的单个字符;
下列所有的字符集都可以放置于[]之中用于匹配字符集范围内的单个字符:
[:lower:]
[:upper:]
[:alpha:]
[:digit:]
[:xdigit:]
[:alnum:]
[:punct:]
[:space:]
[a-z]:仅表示所有的小写字母
[A-Z]:仅表示所有的大写字母
[0-9]:仅表示所有的十进制数码
次数匹配类:该类字符前面的一个字符可以出现的次数;
*:其前面的字符可以出现任意次,即:0次,1次或多次;
?:其前面的字符可有可无,即:0次或1次;
+:其前面的字符至少出现一次;
{m,n}:其前面的字符至少出现m次,最多不超过n次;
{m}:其前面的字符必须出现m次;
{m,}:其前面的字符至少出现m次;
{,n}:其前面的字符出现至少出现0次,最多不超n次;
注意:在正则表达式中,表示任意长度的任意字符:.*
位置锚定字符:
行锚定:
行首锚定:^
行尾锚定:$
字锚定:
字首锚定:<或
字尾锚定:>或
分组与前向引用字符:
():将小括号中包含的内容作为一个不可分割的整体来处理;
1, 2, 3,...:前向引用
正则表达式处理引擎的内置变量,1表示前面所出现的第一组小括号中括选的内容;2表示前面所出现的第二组小括号中括选的内容;...
(string1(string2)): 1表示string1,2表示string2;
(string1).*(string2):1表示string1,2表示string2;
或者:
|:将其左右的字符或字符串当做整体对待;
"C|cat" C cat
扩展的正则表达式元字符:ERE
字符匹配类:
.:匹配任意单个字符;
[]:匹配任意指定范围内的单个字符;
[^]:匹配任意指定范围以外的单个字符;
下列所有的字符集都可以放置于[]之中用于匹配字符集范围内的单个字符:
[:lower:]
[:upper:]
[:alpha:]
[:digit:]
[:xdigit:]
[:alnum:]
[:punct:]
[:space:]
[a-z]:仅表示所有的小写字母
[A-Z]:仅表示所有的大写字母
[0-9]:仅表示所有的十进制数码
次数匹配类:该类字符前面的一个字符可以出现的次数;
*:其前面的字符可以出现任意次,即:0次,1次或多次;
?:其前面的字符可有可无,即:0次或1次;
+:其前面的字符至少出现一次;
{m,n}:其前面的字符至少出现m次,最多不超过n次;
{m}:其前面的字符必须出现m次;
{m,}:其前面的字符至少出现m次;
{,n}:其前面的字符出现至少出现0次,最多不超n次;
注意:在正则表达式中,表示任意长度的任意字符:.*
位置锚定字符:
行锚定:
行首锚定:^
行尾锚定:$
字锚定:
字首锚定:<或
字尾锚定:>或
分组与前向引用字符:
():将小括号中包含的内容作为一个不可分割的整体来处理;
1, 2, 3,...:前向引用
正则表达式处理引擎的内置变量,1表示前面所出现的第一组小括号中括选的内容;2表示前面所出现的第二组小括号中括选的内容;...
(string1(string2)): 1表示string1,2表示string2;
(string1).*(string2):1表示string1,2表示string2;
或者:
|:将其左右的字符或字符串当做整体对待;
"C|cat" C cat
grep系:
grep:仅支持基本正则表达式元字符
egrep:可以支持扩展正则表达式元字符
fgrep:不支持任何形式的正则表达式元字符,将所有的字符都视为没有任何特殊意义的普通文本字符;
常用选项:
-A num:同时显示被PATTERN匹配到的行及其后续num行;
-B num:同时显示被PATTERN匹配到的行及其前面num行;
-C num:同时显示被PATTERN匹配到的行及其前后num行;
--color[=WHEN]:以高亮颜色显示被匹配到的内容;
-c, --count:不输出被PATTERN匹配的行的内容,而是输出被PATTERN匹配到的行数;
-E, --extended-regexp:可以使grep命令支持扩展正则表达式元字符;相当于执行了egrep命令;
-F, --fixed-strings:相当于fgrep;
-e PATTERN, --regexp=PATTERN:指定多个PATTERN在一个命令行中生效;
-f FILE, --file=FILE:从指定的文件中读取多个PATTERN用于一次搜索;
-i, --ignore-case:忽略文件中的字符的大小写;
-o, --only-matching:仅显示被PATTERN匹配到的部分,关闭贪婪模式;
-q, --quiet, --silent:安静模式;相当于 grep > /dev/null
-v, --invert-match:显示没有被PATTERN匹配到的行;
以上是关于文本处理三剑客之grep的主要内容,如果未能解决你的问题,请参考以下文章