您的位置:首页 > 运维架构 > Shell

shell 编程(一)之 正则表达式

2010-03-15 19:13 501 查看
接触linux那么长时间了, 今天想到了应该系统的学习整理一下了。(系统debian, ubuntu)。

就从命令行和linux shell (bash)开始吧。

正则表达式骑士没有什么神秘色彩,她就是模板(pattern)而已,用来匹配数据流的模式模板。她是通过一些linux(unix)程序来筛选符合匹配模式的

数据流,该模板通常会被包含在“/.../”中。 正则表达式最重要的就是元字符(metacharacter),这个是与linx命令行下通配符(wildcard)类似的特殊字符(但是有区别的),使用的时不能混淆。

我们常见的正则表达式有两种:

>> POSIX 基本正则表达式(BRE)

>> POSIX扩展正则表达式 (ERE)

下面通过介绍两个正则表达式引擎(regular expression engine)[主要是sed 编辑器和gawk ,就是上面提到的程序]来揭示正则表式的用法。

wolf@wolf:~$ echo "I am wolf" | sed -n '/wolf/p'

I am wolf



wolf@wolf

:~$ echo "I am wolf" | sed -n '/python/p'


#按下回车键

wolf@wolf
:

~$


#此行没有任何输出

wolf@wolf:~$ echo "I am wolf " | gawk '/wolf/{print $0}'

I am wolf

wolf@wolf:~$ echo "I am wolf " | gawk '/python/{print $0}'

wolf@wolf:~$

这是

一个基本的用sed编辑器和gawk使用正则表达式匹配数据流的例子。
具体的解释稍候就会涉及到。

再使用正则表达式之前有几个需要记住的原则:

1. 正则表达式区分大小写

2.正则表达式匹配的不必要是完整的单词。单词的一个部分(slice)也是可以的。

3.如果正则表达式中出现了空格, 那么它也是模式的一部分。

好了正式接触正则表达式。

这个正则表达式包含的几个基本的特殊字符有: . *[]^${}/+?|()


在使用时, 如果要单独匹配这些字符 , 此时不能直接在匹配模式中使用这些符号 , 需在前加一个转义字符/(backslash ).

还又一个需要注意的就是/(slash), 虽然它不是特殊字符之一,但是注意它经常由于包裹正则表达式的模板,所以他也是

需要转义的。

下面开始逐个介绍这些特殊字符的用法。(正则表达式运用的非常广, 在一些脚本语言中python, php.perl很常见,这些

基本的字符大多相同, 所以需要认真的对待, 一通百通)。

(未完待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: