Chinaunix首页 | 论坛 | 博客
  • 博客访问: 185063
  • 博文数量: 49
  • 博客积分: 635
  • 博客等级: 中士
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-25 12:58
文章分类

全部博文(49)

文章存档

2012年(9)

2011年(40)

分类: LINUX

2011-11-24 20:51:15

最近在学习shell,而CU里面比较火的帖子是网中人《shell十三问?》和wingger《基础十二篇》,在这里先感谢两位大大为吾等新手提供这么好的资料。以下是自己摘自跟贴网友的一部分内容,如有错误,麻烦各位指点轻拍,哇嘎嘎。
^[the]:匹配以t或h或e开头的行;
^the:匹配以the开头的行;
[a-z][a-z]*:匹配至少一个小写字母(注意*在RE和wildcard中的区别,可以加上""避免wildcard expansion的处理);
De[Vv]ice\.:匹配DeVice.或者Device.的行;
^ [^|] :不以|开头的行;
[000*]:没有任何的意义;
[^0-9\$]:匹配非数字且非$字符(注意\的作用);
[^0-9A-Za-z] :对于非数字且非字母;

另外,要注意边界符(boundary)的重要性,例如:
  1. lee@ubuntu:~/shell_study/test_find$ ls -al
  2. 总用量 16
  3. drwxr-xr-x 3 lee lee 4096 2011-11-24 20:11 .
  4. drwxr-xr-x 7 lee lee 4096 2011-11-23 12:23 ..
  5. drwxr-xr-x 2 lee lee 4096 2011-11-23 10:05 test
  6. -rwxr--r-- 1 lee lee 0 2011-11-24 20:11 test1
  7. -rw-r--r-- 1 lee lee 123 2011-11-23 10:08 test.sh
如果这样输入:
  1. lee@ubuntu:~/shell_study/test_find$ ls -al | grep "rw"
  2. drwxr-xr-x 3 lee lee 4096 2011-11-24 20:11 .
  3. drwxr-xr-x 7 lee lee 4096 2011-11-23 12:23 ..
  4. drwxr-xr-x 2 lee lee 4096 2011-11-23 10:05 test
  5. -rwxr--r-- 1 lee lee 0 2011-11-24 20:11 test1
  6. -rw-r--r-- 1 lee lee 123 2011-11-23 10:08 test.sh
因为我们并没有指定rw是边界字符,所以只要含有"rw"的结果都会列出来。

锚点(anchor):用来标示RE匹配的位置:
^:行首,比如^abc 匹配以字符串abc开头的行;
$:行尾,比如abc$匹配以字符串abc结尾的行;
\<:词首,比如\
\>:词尾,比如abc\>匹配以abc结尾的词,并打印该词所在的行

BRE(Basic Regular Expression)(grep和sed使用)运算符优先级(由高到低):
 

ERE(egrep和awk使用)运算符优先级:

好像方括号表达式[..]有bug。

匹配包含空格的的空行:'^ *$'
在sed和(grep)中,只有当“^”和"$"分别处于行首和行尾时,才有特殊作用。而在awk中,它们总是特殊的,即使它们可能使编写的正则表达式不匹配任何东西。

在POSIX扩展中,
?等价于\{0,1\}
*等价于\{0,\}
+等价于\{1,\}



阅读(1426) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~