1.简介

Linux系统中grep命令是一种强大的文本搜索、查找过滤工具,,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep使用格式:grep [选项] [模式] [文件…],它在一个或多个文件中搜索满足模式的文本行。

grep家族共有三个:grep、egrep、fgrep

  • grep中字符的匹配位置设定
    ^ 关键字
    关键字 $
    <关键字
    关键字>
    <关键字>\

注意:正规的 grep 不支持扩展的正则表达式 , 竖线是用于表示”或”的扩展正则表达式元字符 , 正规的 grep 无法识别,加上反斜杠,这个字符就被翻译成扩展正则表达式,就像egrep 命令等同于‘grep -E

2.常用参数

参数

功能

-c

只输出匹配行的计数。

-i

不区分大小写(只适用于单字符)。

-h

查询多文件时不显示文件名。

-l

查询多文件时只输出包含匹配字符的文件名。

-n

显示匹配行及行号。

-s

不显示不存在或无匹配文本的错误信息。

-v

显示不包含匹配文本的所有行。

-E

开启拓展的正则表达式

3.用法演示

准备工作:将/etc/passwd拷贝到/mnt下,我们以这个文件为例,文件内容大致如下:

grep 大文件 从中间开始 grep文件类型_特殊字符

  • 找出/mnt/passwd中包含root的行
grep root passwd

grep 大文件 从中间开始 grep文件类型_grep 大文件 从中间开始_02

  • 忽略大小写
grep -i root passwd

grep 大文件 从中间开始 grep文件类型_正则表达式_03

  • 关键字左边不能有其他字符(不包含特殊字符)
grep "\<root" passwd

grep 大文件 从中间开始 grep文件类型_搜索_04

  • 关键字右边不能有其他(不包含特殊字符)
grep "root\>" passwd

grep 大文件 从中间开始 grep文件类型_grep 大文件 从中间开始_05

  • 关键字左右不能有其他(不包含特殊字符)
grep "\<root\>" passwd

grep 大文件 从中间开始 grep文件类型_特殊字符_06

  • ^关键字 ——>以关键字开头
  • 关键字$ ——>以关键字结尾
grep -E "^root\>|\<root$" passwd  ##因为有 | ,需要扩展-E(extend)
  egrep "^root\>|\<root$" passwd	##两条命令含义相同——过滤以root开头或者结尾的行

grep 大文件 从中间开始 grep文件类型_特殊字符_07

  • -v 反向过滤,不包含的所有
grep -E "^root\>|\<root$" passwd -v
  grep -E "^root\>|\<root$" passwd -v | grep root
  grep -E "^root\>|\<root$" passwd -v | grep "\<root\>"

grep 大文件 从中间开始 grep文件类型_特殊字符_08

4.grep 中字符的匹配次数设定

* 字符出现 [0- 任意次 ] 
? 字符出现 [0-1 次 ] 
+ 字符出现 [1- 任意次 ] 
{n} 字符出现 [n 次 ] 
{m,n} 字符出现 [ 最少出现 m 次,最多出现 n 次 ] 
{0,n} 字符出现 [0-n 次 ] 
{m,} 字符出现 [ 至少 m 次 ] 
(xy){n} xy关键字出现 [n 次 ] 
.* 关键字之间匹配任意字符 
{}大括号内的内容属于哪一个程序 
()括号内属于一个整体

grep 大文件 从中间开始 grep文件类型_正则表达式_09