grep 及 正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep 及 正则表达式相关的知识,希望对你有一定的参考价值。
一、grep概念
grep,即搜索正则表达式,也就是说grep简单来讲就是用来搜索匹配字符的。
二、正则表达式:
(1)正则表达式遵循的几个重复的操作
- ? 最多匹配一次
- * 匹配零次或者任意多次
- + 匹配一次以上
- {n} 匹配n次
- {n,} 最少匹配n次
- {,m} 最多匹配m次
- {n,m} 匹配n到m次
(2)常用的正则表达式栗子:
^ 行首
$ 行尾
[ ] 匹配出现的任意一个
^user$ 只包含user
[tty]$ 以tty结尾的行
^ [ ^ l ] 排除关联目录的目录列表
[ . * 0 ] 0之前或之后加任意字符
[ ^ $ ] 空行
[ ^ . * $ ] 匹配行中任意字符串
^ . . . . . . $ 包括6个字符的行
\ ^ q 以^ q开始行
^ . $ 仅有一个字符的行
^\.[0-9][0-9] 以一个句点和两个数字开始的行
[ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 2 \ } - [ 0 - 9 ] \ { 4 \ } 日期格式d d - m m - y y y y
[ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } \ . [ 0 - 9 ] \ { 3 \ } I P地址格式
[A-Za-z]* 匹配所有单词
三、常用的 grep 选项
(1)-c 只输出匹配行的计数。
(2)-i 不区分大小写(只适用于单字符)。
(3)-n 显示匹配行及行号。
(4)-s 不显示不存在或无匹配文本的错误信息。
(5)-v 显示不包含匹配文本的所有行。
file1是file拷贝出来的,即cp file file1
(6)-l 查询多文件时只输出包含匹配字符的文件名。
(7)-h 查询多文件时不显示文件名。
(8)多次过滤:
(9)使用 grep 匹配“与”或者“或”模式
grep 命令加- E参数,表示允许使用扩展模式匹配。
(10) -w 搜索整个词,而不是词中的部分字串。
(11)-A 显示匹配行之后的N行
-B 显示匹配行之前的N行
-C 显示匹配行前后的N行
(12)-r 递归搜索全部的文件
用法:$ grep -r "file" *
(13)-o 只显示匹配的字串(当使用正则表达式时比较有用处)
(14)-b 显示匹配的位置
注意: 以上输出显示的不是行内的位置,而是整个文件中的字节byte位置
(15)--color将搜索到的字符予以颜色加以标识,易于辨认
(16)-q 静默模式,不输出,在shell脚本中经常用到
四、grep中使用正则表达式
(1). 匹配任意单个字符
(2)*匹配前面一个字符任意次(可以是0次)
(3).* 匹配任意长度的任意字符(贪婪模式)
(4)[ ] 指定范围内的任意单个字符
[^]指定范围内之外的字符
(5)X\{m,n\} X出现大于m次,小于n次
(6)X\{m,\} X出现大于m次,无上限
(7)? 匹配其前面的字符0次或一次(-E,使用扩展表达式)
(8)锚定符 ^ 锚定行首(行首匹配)
(9)$ 锚定行尾(行尾匹配)
(10)^$ 空白行
本文出自 “GREEN” 博客,请务必保留此出处http://green906.blog.51cto.com/10697569/1793887
以上是关于grep 及 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章