一、grep概念
grep,即搜索正则表达式,也就是说grep简单来讲就是用来搜索匹配字符的。
二、正则表达式:
(1)正则表达式遵循的几个重复的操作
- ? 最多匹配一次
- * 匹配零次或者任意多次
- + 匹配一次以上
- {n} 匹配n次
- {n,} 最少匹配n次
- {,m} 最多匹配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显示匹配行及行号。
(5)-v显示不包含匹配文本的所有行。
file1是file拷贝出来的,即cp file file1
(8)多次过滤:
(9)使用 grep 匹配“与”或者“或”模式
grep命令加- E参数,表示允许使用扩展模式匹配。
(10)-w 搜索整个词,而不是词中的部分字串。
(11)-A 显示匹配行之后的N行
-B 显示匹配行之前的N行
-C 显示匹配行前后的N行
用法:$ grep -r "file" *
(13)-o 只显示匹配的字串(当使用正则表达式时比较有用处)
(14)-b 显示匹配的位置
注意:以上输出显示的不是行内的位置,而是整个文件中的字节byte位置
(15)--color将搜索到的字符予以颜色加以标识,易于辨认
(16)-q 静默模式,不输出,在shell脚本中经常用到
四、grep中使用正则表达式
(1). 匹配任意单个字符
(2)*匹配前面一个字符任意次(可以是0次)
(3).* 匹配任意长度的任意字符(贪婪模式)
(4)[ ]指定范围内的任意单个字符
[^]指定范围内之外的字符
(6)X\{m,\} X出现大于m次,无上限
(7)? 匹配其前面的字符0次或一次(-E,使用扩展表达式)
(8)锚定符^ 锚定行首(行首匹配)
(9)$ 锚定行尾(行尾匹配)
(10)^$ 空白行