shell脚本教学进阶——Linux三大文本处理工具之grep

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下,我们以这个文件为例,文件内容大致如下:

在这里插入图片描述

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

      grep root passwd
    

    在这里插入图片描述

  • 忽略大小写

      grep -i root passwd
    

    在这里插入图片描述

  • 关键字左边不能有其他字符(不包含特殊字符)

      grep "\<root" passwd
    

    在这里插入图片描述

  • 关键字右边不能有其他(不包含特殊字符)

      grep "root\>" passwd
    

    在这里插入图片描述

  • 关键字左右不能有其他(不包含特殊字符)

      grep "\<root\>" passwd
    

在这里插入图片描述

  • ^关键字 ——>以关键字开头

  • 关键字$ ——>以关键字结尾

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

    在这里插入图片描述

  • -v 反向过滤,不包含的所有

      grep -E "^root\>|\<root$" passwd -v
      grep -E "^root\>|\<root$" passwd -v | grep root
      grep -E "^root\>|\<root$" passwd -v | grep "\<root\>"
    

    在这里插入图片描述

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

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/meltsnow/article/details/88809971