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很常见,这些
基本的字符大多相同, 所以需要认真的对待, 一通百通)。
(未完待续)
就从命令行和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很常见,这些
基本的字符大多相同, 所以需要认真的对待, 一通百通)。
(未完待续)
相关文章推荐
- shell脚本编程(一)正则表达式
- shell脚本编程4:正则表达式
- shell编程之grep和正则表达式
- shell编程之正则表达式
- linux下shell 编程之扩展正则表达式
- shell编程之正则表达式
- shell编程之正则表达式
- Shell编程之正则表达式
- Shell脚本高级编程 二 正则表达式
- shell编程学习之正则表达式
- shell 编程之正则表达式
- Shell编程三剑客之grep正则表达式
- Shell编程之正则表达式
- #7 shell脚本编程之正则表达式
- shell编程值之正则表达式与字符截取(6)
- Linux下shell脚本编程之正则表达式
- shell及脚本3——正则表达式
- Shell正则表达式和文本处理工具
- shell 正则表达式总结及其含义举例
- UNIX和LINUX系统的SHELL正则表达式语法