grep命令
- shell脚本三剑客之一
grep应用场景:通常对数据进行 行的提取
语法:grep [选项] [内容] [file]
-v 对内容进行取反提取
-n 对提取的内容显示行号
-w 精确匹配
-i 忽略大小写
^ 匹配开头行首
-E 正则匹配
正则语法
\ | 转义符,将特殊字符进行转义,忽略其特殊意义 | a.b匹配a.b,但不能匹配ajb,.被转义为特殊意义 |
^ | 匹配行首,^则是匹配字符串的开始 | ^tux匹配以tux开头的行 |
$ | 匹配行尾,$则是匹配字符串的结尾 | tux$匹配以tux结尾的行 |
. | 匹配除换行符\n之外的任意单个字符 | ab.匹配abc或bad,不可匹配abcd或abde,只能匹配单字符 |
[] | 匹配包含在[字符]之中的任意一个字符 | coo[kl]可以匹配cook或cool |
[^] | 匹配字符之外的任意一个字符 | 12345不可以匹配1234或1235,1236、1237都可以 |
[-] | 配[]中指定范围内的任意一个字符,要写成递增 | [0-9]可以匹配1、2或3等其中任意一个数字 |
? | 匹配之前的项1次或者0次 | olou?r可以匹配color或者colour,不能匹配colouur |
+ | 匹配之前的项1次或者多次 | sa-6+匹配sa-6、sa-666,不能匹配sa- |
* | 匹配之前的项0次或者多次 | co*l匹配cl、col、cool、coool等 |
() | 匹配表达式,创建一个用于匹配的子串 | ma(tri)?匹配max或maxtrix |
{n} | 匹配之前的项n次,n是可以为0的正整数 | [0-9]{3}匹配任意一个三位数,可以扩展为0-9[0-9] |
{n,} | 之前的项至少需要匹配n次 | [0-9]{2,}匹配任意一个两位数或更多位数 |
{n,m} | 指定之前的项至少匹配n次,最多匹配m次,n<=m | [0-9]{2,5}匹配从两位数到五位数之间的任意一个数字 |
| | 交替匹配|两边的任意一项 | ab(c|d)匹配abc或abd |
- 常用规则
.* 所有字符 |
[a-z] 小写字母 |
[A-Z] 大写字母 |
[a-Z] 小写和大写字母 |
[0-9] 数字 |
- 常用用法之一
grep "xxx" -r dir #查找指定目录下包含指定内容的文件