在学习linux中文本搜索是很重要的 对于初学者来说如何快速学会运用正则表达式相当重要的。
文本搜索工具,根据用户指定的文本搜索模式(搜索条件)对目标进行逐行搜索,显示能匹配的行。
文本搜索:
grep :基本正则表达式
egrep:扩展正则表达式
fgrep:fast,不支持使用正则表达式
其语法格式: grep [option]...‘PATTERN‘ FILE...
正则表达式:是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等能;
元字符:不表示其字面意义,而用于额外功能性描述。
基本正则表达式
1.字符匹配
| . | 匹配任意单个字符 | 
| [] | 匹配指定范围内的任意单个字符 [0-9],[[:digit:]] [a-z],[[:lower:]] [A-Z],[[:upper:]] [[:space:]] [[:punct:]] [[:alpha:]] [[:alnum:]] | 
| [^] | 取反 | 
2.次数匹配元字符:用于实现指定其前面的字符所能够出现的次数。
| * | 任意长度,它前面的字符可以出现任意次 | 
| \? | 0次或1次,它前面的字符可有可无的 | 
| \m | m次,它前的字符要出现m次 | 
| \{m,n\} | 至少m次,之多n次 | 
| \{m,\} | 至少m次 | 
| \{0,n\} | 至多n次 | 
| .* | 任意长度的任意字符 | 
             
3.位置锚定:
| ^ | 行首锚定;写在模式最左侧 例如:grep "^r...t" /etc/passwd | 
| $ | 行尾锚定;写在模式最右侧 例如:grep "r...t$" /etc/passwd | 
| ^$ | 空白行 例如:grep "^$" /etc/passwd | wc -l | 
| \< | 词首,出现于单词左侧. 例如: grep "\<r...t" /etc/passwd | 
| \> | 词尾,出现于单词右侧 例如 grep "r...t\>" etc/passwd | 
  
4.分组:
| \(\) | 分组中的模式匹配到内容,可由正则表达式引擎记忆在内存中,之后可被引用例如:\(ab\)* grep "\(ro\)*" etc/passwd | 
| \(\)引用 | 有编号:自左而右的左括号,以及与其匹配右括号 例如 \(ab)(x\)y\).*\(mn\) | 
| \# | 引用第n个括号所匹配到的内容,而非模式本身 例如: \(ab\?c\).*1 正确:abcmnaaa 错误:abcmnac abcmnabc acmnac | 
5:grep的命令选项
| -v | 反向选取 | 
| -o | 仅显示匹配的字串,而非字串所在的行 | 
| -i | 忽略字符大小写 | 
| -E | 支持使用扩展正则表达式 | 
| -A# | 显示上行 #(变量输入几行) | 
| -B# | 显示下行 | 
| -C# | 显示全部 | 
本文出自 “正则表达式” 博客,请务必保留此出处http://hhxxb.blog.51cto.com/9152570/1438090
原文地址:http://hhxxb.blog.51cto.com/9152570/1438090