文本处理三剑客之grep及正则表达式
文本处理工具:
Linux上处理文本三剑客:
Grep:文本过滤器工具(模式:pattern)工具;
Sed: stream editor,流编辑器;文本编辑工具;
Awk: linux上实现为gawk,文本报告生成器(格式化文本);
正则表达式:regual expresslon,REGEXP
由一类特殊将字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能;
分两类:
基本正则表达式:BRE
扩展正则表达式:ERE
元字符:、(hello[[:space:]]\+\)\+
Grep : global search REgular expression and print out the line.
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行;
模式:有赠则表达式的元字符及文本字符所编写出的过滤条件;
正则表达式引擎;
Grep [options] PATTERN [FILE….]
Grep [options] [-e PATTERN | -f FILE] [FILE…..]
OPTIONS:
–color=auto: 对匹配到文本进行着色后高亮显示
-i:忽略字符的大小写
-0:只显示匹配到的字符本身
-v:显示不能被模式匹配到的行
-E: 支持使用扩展正则表达式元字符:
-q:–quiet,–silent:静默模式,既不输出任何信息;
-A#: after,后#行
-B#:before,前#行
-C#:前后#行
基本正则表达式元字符:
. : 匹配任意单个字符;
[] : 匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符
[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:] 、[:punct:]、[:space:]
正则表达式
v 匹配次数:用在要指定次数的字符后面,用于指定前面的字 符要出现的次数
*:匹配前面的字符任意次,包括0次 贪婪模式:尽可能长的匹配
.*:任意长度的任意字符
\?:匹配其前面的字符0或1次
\+:匹配其前面的字符至少1次
\{m\}:匹配前面的字符m次
\{m,n\}:匹配前面的字符至少m次,至多n次
\{,n\}:匹配前面的字符至多n次
\{m,\}:匹配前面的字符至少m次
v 位置锚定:定位出现的位置
^:行首锚定,用于模式的最左侧
$:行尾锚定,用于模式的最右侧
^PATTERN$: 用于模式匹配整行
^$: 空行
^[[:space:]]*$ :空白行
\< 或 \b:词首锚定,用于单词模式的左侧
\> 或 \b:词尾锚定;用于单词模式的右侧
\<PATTERN\>:匹配整个单词
分组:\(\):将一个或多个字符捆绑在一起,当作一个整体进 行处理,如:\(root\)\+
分组括号中的模式匹配到的内容会被正则表达式引擎记录 于内部的变量中,这些变量的命名方式为: \1, \2, \3, …
\1: 从左侧起,第一个左括号以及与之匹配右括号之间 的模式所匹配到的字符;
实例:
\(string1\+\(string2\)*\)
\1: string1\+\(string2\)*
\2: string2
后向引用:引用前面的分组括号中的模式所匹配字符(而 非模式本身)
egrep及扩展的正则表达式 v
egrep = grep -E
vegrep [OPTIONS] PATTERN [FILE…] v
扩展正则表达式的元字符: v
字符匹配:
. 任意单个字符
[] 指定范围的字符
[^] 不在指定范围的字符
次数匹配:
*:匹配前面字符任意次
?: 0或1次
+:1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次
位置锚定:
^ :行首
$ :行尾
\<, \b :语首
\>, \b :语尾 v
分组:
()
后向引用:\1, \2, … v
或者:
a|b
C|cat: C或cat
(C|c)at:Cat或cat
原创文章,作者:xiaoqiang512,如若转载,请注明出处:http://www.178linux.com/33244