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  #查找指定目录下包含指定内容的文件
05-21 15:14