linux学习笔记(一)---正则表达式

  正则表达式就是处理字符串的方法,并且是以行为单位进行字符串处理的。通常在linux中,进行文字的"搜索/替换"工作。正则表达式只是一种处理字符串的标准表示方法,在linux中支持这种方法的工具有vi,sed,awk,grep等。

  正则表达式的特殊字符:

  Regular Expression字符        范例      含义

  ^(匹配行首)            ^word     匹配以word开头的行

  $(匹配行尾)             word$       匹配以word结尾的行

  \w                        匹配字母或数字或下划线或汉字

  \s                        匹配任意的空白符

  \d                        匹配数字

  \b                        匹配单词的开始或结束

  .(匹配任意一个字符)          hel.o       匹配以hel开头,o结尾的长度为5的字符串

  \(转义字符)              \.        匹配字符.

  *(匹配任意多个前一个字符)        hello*      匹配hell,hello....hellooooo......

  \{n,m\}(匹配n到m个前一个字符)     hello\{1,3\}   匹配hello,helloo,hellooo。 特殊情况:\{n\}:匹配n个前一个字符。\{n,\}:匹配至少n个前一个字符

  [](匹配字符集合中的一个)        [a-zA-Z]     匹配a-z或A-Z中的一个字符

  [^](匹配不是字符集合中的一个字符)  [^a-zA-Z]    匹配不是a-z和A-Z的一个字符

  

  另外有四个扩展的正则表达式特殊字符:

  Regular Expression字符        范例      含义

  +(匹配1个或以上个前一个字符)      hello+     匹配hello,helloo....

  ?(匹配0个或1个前一个字符)     go?d       匹配gd或god

  |(匹配数个字符串中的一个)      god|good    匹配god或good

  ()(匹配用户组,一般与|合用)     re(a|o|e)d    匹配read或reed或reod

  需要说明的是()会进入子shell,并且(!)在正则表达式中不是特殊字符。

  以常用的正则表达式程序工具grep来说,其全称是Global search Regular Expression and print out the line,即全局搜索正则表达式并打印出行。

  其格式如下:grep -[option] '搜索字符串' 文件名

  参数说明如下:

  -a    在二进制文件中以,文本文件方式搜索数据

  -c    只输出匹配的行的数量

  -i     搜索时忽略大小写

  -h     查询多文件时不显示文件名

  -l    只列出符合匹配的文件名,而不输出匹配行

  -n     显示所有匹配行并列出行号

  -s     不显示不匹配或无匹配文本的错误信息

  -v     显示不包含匹配文件的所有行

  -w    匹配整词,忽略regular expression字符的特殊含义

  -x    匹配整行,必须整行内容匹配

  -r    递归搜索,不仅搜索该目录,还搜索子目录

  -q    不输出任何结果,以退出状态表示搜索是否成功

  -b    打印匹配行距文件首部的偏移量,以字节为单位

  -o    与-b结合使用,打印匹配单词距文件首部的偏移量,也是以字节为单位

  -E    支持扩展正则表达式,等价于egrep

  -F    不支持正则表达式,按字面意思进行匹配,等价于fgrep

  待续......

  这里说明的挺详细:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

转载于:https://www.cnblogs.com/nanlou/archive/2012/10/11/2720591.html

你可能感兴趣的:(shell,awk)