码迷,mamicode.com
首页 > 系统相关 > 详细

Linux中的通配符和正则表达式

时间:2015-04-01 20:24:16      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:linux   正则表达式   通配符   

通配符:

文件名统配是bash的特性之一,通配符一般用于文件名的匹配。

*   :任意长度的任意字符

?   :匹配任意单字符

[]  :匹配指定范围内的任意单字符

例:[abc], [a-z], [0-9], [0-9a-z]

[^] :匹配指定范围以外的任意单字符

例:[^0-9a-z]

字符集合:

[:space:] :所有空白字符

[:punct:] :所有标点符号

[:lower:] :所有小写字母

[:upper:] :所有大写字母

[:digit:] :所有数字

[:alnum:] :所有数字、字母

[:alpha:] :所有字母

Linux文本处理工具:

grep, egrep, fgrep(用于文件内容匹配,将文件名转换为字符窜也可以用这些工具进行搜索)

文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。

正则表达式:

正则表达式是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能,一般用于文件内容匹配(通配符常用于文件名的匹配),将文件名转换为字符窜也可以用这些工具进行搜索。正则表达式又可分为基本正则表达式和扩展正则表达式。

1)基本正则表达式:grep

2)扩展正则表达式: egrep, grep -E

fgrep: fast, 不支持使用正则表达式(直接查找匹配的内容)

1)基本正则表达式的元字符:

字符匹配:

.  : 匹配任意单个字符(区别于通配符的*)

[]: 匹配指定范围内的任意单个字符

[0-9], [[:digit:]]

[a-z], [[:lower:]]

[A-Z], [[:upper:]]

[[:space:]]

[[:punct:]]

[[:alpha:]]

[[:alnum:]]

[^]:取反。例:[^[:alpha:]],匹配所有的非字母

次数匹配元字符:用于实现指定其前面的字符所能够出现的次数

*: 任意长度,它前面的字符可以出现任意次

例如:x*y

\?: 0次或1次,它前面的字符是可有可无的

例如:x\?y

\{m\}: m次,它前的字符要出现m次

例如:x\{2\}y

\{m,n\}: 至少m次,至多n次

例如:x\{2,5\}y

\{m,\}:至少m次

\{0,n\}: 至多n次

.*:任意长度的任意字符(工作于贪婪模式:尽可能多的去匹配

位置锚定:

^: 行首锚定;

写在模式最左侧

$: 行尾锚定;

写在模式最右侧

^$: 空白行

匹配单词(不包含特殊字符的连续字符组成的串):

\<: 词首,出现于单词左侧,\b

\<char(或者\bchar)

\>: 词尾,出现于单词右侧, \b

char\>(或者char\b

分组:

\(\)

例如:\(ab\)*

分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用

引用:

\#: 引用第n个括号所匹配到的内容,而非模式本身

例如:

\(ab\?c\).*\1    括号匹配到的内容是abc,所以后面\1只匹配abc

命令选项(grep):

-v: 反向选取

-o: 仅显示匹配的字串,而非字串所在的行

-i: ignore-case,忽略字符大小写

-E: 支持使用扩展正则表达式

-A # 显示前几行

-B # 显示后几行

-C # 显示上下几行

2)扩展正则表达式(无需转义字符):

字符匹配:

.

[]

[^]

次数匹配:

*     :任意次

?     :0次或1次

+     :至少1次;(相对于基本正则多出的一项)

{m}   : 精确匹配m次

{m,n} : 至少m次,至多n次

{m,}  :至少m次

{0,n} :最多n次

锚定:

^ :行首锚定;

$ :行尾锚定;

\<, \b(这里任然需要转义)

\>, \b(同上)

^$, ^[[:space:]]*$

分组:

()

引用:\1, \2, \3(同基本正则表达式)

注意:

a|b: a或者b

conC|cat:conC或cat

con(C|c)at:concat或conCat

 

扩展正则表达式的使用:

grep -E  ‘PATTERN‘ FILE...

egrep ‘PATTERN‘ FILE...


Linux中的通配符和正则表达式

标签:linux   正则表达式   通配符   

原文地址:http://ljbaby.blog.51cto.com/10002758/1627280

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!