首页 > 代码库 > 第三章 shell学习之正则表达式
第三章 shell学习之正则表达式
正则表达式
\<the\>:精确匹配the,不包括包含the的单词
[^b-d]:不包含b~d
a\{2\}:a出现2次
a\{2,3\}:a出现2~3次
a\{2,\}:a至少出现2次
[:upper:]:大写字母(用的时候外面加一层[]表示匹配字符集合)
[:lower:]:小写字母
[:digit:]:数字
[:alnum:]:大小写字母和数字
[:space:]:表示空格或tab键
[:alpha:]:大小写字母
通配
注意通配和正则表达式不同,虽然有共同的符号
ls -l *.sh
匹配出以.sh结尾的文件,而*在正则表达式中表示0个或多个前面的字符
ls -l 0?.sh
匹配以0开头,且后面跟一个字符,以.sh结尾的文件,而?在扩展正则表达式中表示0个或1个前面的字符
[]和[^]的用法和正则表达式相同
grep
文本搜索工具
grep [选项] [模式] [文件]
-c 只输出匹配韩的数量
-i 忽略大小写
-l 只列出符合匹配的文件名,不列出具体的匹配行
-n 列出所有的匹配行,并显示行号
-s 不显示不存在或无匹配文本的错误信息
-r 递归搜索,不仅搜索当前工作目录,还搜索子目录
-q 禁止输出任何结果,以退出状态表示搜索是否成功
-E 支持扩展的正则表达式
-F 不支持正则表达式,按照字符串的字面意思进行匹配
-h 查询多文件时不显示文件名
-b 打印匹配行距头部的偏移量,以字节为单位,如果与-o结合则为匹配单词距头部的偏移量
-w 匹配整词,即不把模式的正则表达式元字符解释成特殊含义,如cer*就是cer*
-x 匹配整行,即如果匹配word*,则这行字能为word*才算匹配
注意:如果模式有空格则要用引号;文件名可以用通配符(注意不是正则表达式);开头的-也要加\进行转移(以为-选项)
本文出自 “flyclc” 博客,请务必保留此出处http://flyclc.blog.51cto.com/1385758/1540161