正则表达式之grep命令

来源:互联网 发布:整体厨房设计软件 编辑:程序博客网 时间:2024/06/06 13:57

本文的正则表达式是grep命令的规范,与ls、find等命令的规范有所差别。

不管在什么命令中,正则表达式最好使用双引号引起来,防止被当成是命令。

grep元字符集

\   :  通常用于打开或关闭后续字符的特殊含义,如\(...\)与\{...\}
^ :锚定行的开始 如:'^grep'匹配所有以grep开头的行。 
$ :锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 
. :匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 
* :匹配零个或多个先前字符。 .*一起用代表任意长度任意字符。
[] :匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 
[^] :匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 
\(..\) :标记匹配字符,如'\(love\)',love被标记为1。 如\(ab\).*\1 : 指匹配ab组合的两次重现,中间可存在任意数目的字符。 可以将最多9个独立的子模式存储在单个模式中
x\{m\}: 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。如果x是不确定字符,比如[:digit:]\{5\}表示出现5个数字 
x\{m,\} :重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。 
x\{m,n\}:重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w :匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\b :单词锁定符,如: '\bgrep\b'只匹配grep。

示例

在first.sh文件中,有以下的内容

pshiz@163.com
pshiz@163com
pshiz@163.com.
pshiz@
@163.com
pshiz@mail2.sysu.edu.cn
pshiz@126.com
yangr@163.com
pp@163.com

1)找出含有163的行

> grep "163" first.sh

2)找出以cn结尾的行

> grep "cn$" first.sh

3)找出其中字符长度为7的行

> grep "^.......$" first.sh

4)找出163邮箱格式正确的行(用户名为数字、字母和下划线)

> grep "^[[:digit:][:alpha:]_]\{1,}@163\.com" first.sh

注意:"[[:digit:][:alpha:]_]*@163\.com"是不对的,@163.com这一行也会被包含

5)找出邮箱格式正确的行(假设格式是xx@xx.xx.xx,每个xx都是数字、字母和下划线的组合)

> grep "^[[:digit:][:alpha:]_]\{1,\}@\([[:digit:][:alpha:]_]\{1,\}\.\)\{1,\}[[:digit:][:alpha:]_]\{1,\}$" first.sh

易错:切记开头符号^与结束符号$的使用








0 0
原创粉丝点击