定义:使用若干具有特殊意义的符号配合某工具对文档进行增删改查等操作, 关键把握“匹配”二字。
grep ^root user //找以root开头的行
grep bash$ user //找以bash结尾的行
grep ^$ user //找空行
grep -v ^$ user //显示除了空行的内容
grep "[root]" user //找rot任意一个字符
grep "[rot]" user //效果同上
grep "[^rot]" user //显示r或o或t以外的内容
grep "[0123456789]" user //找所有数字
grep "[0-9]" user //效果同上
grep "[^0-9]" user //显示数字以外内容
grep "[a-z]" user //找所有小写字母
grep "[A-Z]" user //找所有大写字母
grep "[a-Z]" user //找所有字母
grep "." user //找任意单个字符,文档中每个字符都可以理解为任意字符
grep "r..t" user //找rt之间有2个任意字符的行
grep "r.t" user //找rt之间有1个任意字符的行,没有匹配内容,就无输出
grep "*" user //错误用法,*号是匹配前一个字符任意次,不能单独使用
grep "ro*t" user //找rt,中间的o有没有都行,有几次都行
grep ".*" user //找任意,包括空行 .与*的组合在正则中相当于通配符的效果
grep "ro\{1,2\}t" user //找rt,中间的o可以有1~2个
grep "ro\{2,6\}t" user //找rt,中间的o可以有2~6个
grep "ro\{1,\}t" user //找rt,中间的o可以有1个以及1个以上
grep "ro\{3\}t" user //找rt,中间的o必须只有有3个
grep "\(0:\)\{2\}" user //找连续的2个0: 小括号的作用是将字符组合为一个整体
扩展正则:
grep "ro\{1,\}t" user可以改成 grep -E "ro{1,}t" user
或者
egrep "ro{1,}t" user
grep "ro\{1,\}t" user //使用基本正则找o出现1次以及1次以上
egrep "ro{1,}t" user //使用扩展正则,效果同上,比较精简
egrep "ro+t" user //使用扩展正则,效果同上,最精简
grep "roo\{0,1\}t" user //使用基本正则找第二个o出现0~1次
egrep "roo{0,1}t" user //使用扩展正则,效果同上,比较精简
egrep "roo?t" user //使用扩展正则,效果同上,最精简
egrep "the\b" abc.txt //在abc.txt文件中找the,右边不允许出现数字、字母、下划线
egrep "\bthe\b" abc.txt //两边都不允许出现数字、字母、下划线
egrep "\<the\>" abc.txt //效果同上
egrep "^root|^bin" user //找以root或者以bin开头的行