shell三剑客之grep!

背景

对于很多的测试人员来说,grep命令都很熟悉,用的最多的比如去查找指定的进程:ps -ef | grep ***

其中***为进程名或进程号,这里我们只用到的grep的最基础功能-从标准输出中过滤指定的字符串,实际上grep的功能远不止如此。

这篇文章给大家来介绍下grep的进阶及高阶用法,来帮助我们在测试工作中提升效率。

grep的全称:Global search Regular Expression and Print out the line。

是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。

grep和sed、awk一起成为Linux中的三剑客。

grep可以不使用正则,但是跟正则一起配合使用时,功能最为强大!

命令语法

grep提供两种方式:

◆ grep [option] [pattern] testfile

◆ stdout | grep [option] [pattern]

第一种是从文本中直接使用pattern匹配搜索

第二种是从标准输出中处理 grep所提供的option(参数选项)

我们先从第一个最简单的示例开始:先准备一个测试文件。

内容如下:

从文本文件中搜索test字符串

可以看到包含有"test"的行被打印出来,默认grep是区分大小写的。

所以"Test","TEST"没有被匹配出来。

如果想要不区分大小写,我们可以加"-i"的参数。

如下:

当前我们的测试文本内容比较少,我们肉眼可以见到是在第几行。

如果文本行数较多的情况下那就不太方便了,这里就可以用到"-n"的参数

包含有"test"的并且不区分大小写的行在开头会显示行号,现在的结果中匹配的关键字所在行全部内容都会输出。

如果只想要看到匹配的关键字,怎么办?

使用"-o"参数即可

有时候我们需要对整个目录去搜索关键字,如果直接使用grep "test" 目录名,会报错。

加参数‘-r‘就可以避免这个问题

可以看到shellTest目录下的两支文件test1.txt以及testfile都包含test被打印出来了

“-q”选项表示使用静默模式,在此模式下grep命令不会有任何的打印结果,无论是否有匹配到。

一般来说我们可以根据echo $?

来查看上一条指令(grep)的执行结果,如果返回结果为0,表示grep有匹配到了,如果返回结果为1,表示grep没有匹配到。

一般我们可以shell脚本中去用if条件分支进行判断,如果echo $?结果为0,就去执行相应的操作

grep结合pattern正则

前面我们介绍了参数的基本用法,grep的强大之处其实是和正则表达式一起才有作用。

注:本篇文章不会具体介绍正则表达式的使用,如果不了解正则表达式的同学推荐去看下之前相关的文章

我们知道在正则表达式中分为了两类:

01 基本正则表达式

◆ . 单个字符

◆ * 表示前面的字符连续出现任意次,包括0次

◆ ^ 表示锚定行首

◆ $ 表示锚定行尾

◆ [a-z] [0-9] 区间范围

......

02 扩展正则表达式

◆ ?表示匹配其前面的字符0或1次

◆ + 表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶。

◆ () 分组

◆ {} 连续匹配

◆ | 匹配多个表达式的任何一个

......

如查询以"lemon"单词开头

查找文件中空白行的数量

正则“^$”表示空白行,参数“-c”表达计算行数

连续字数的正则匹配,如:查找“appium”,p是连续的

“{2}”表示p连续出现了两次,可以发现结果是匹配不到的。

因为{}是扩展正则表达式,grep默认是基本正则表达式,如果需要支持扩展正则表达式,我们需要加"-E"选项:

本文由柠檬班歪歪原创,转载需注明出处!

转发到朋友圈是最高的赞赏

关注柠檬班软件测试博客园,获取最新技术文章

让软件测试学习变得更简单!

Shell脚本如何备份数据库?

想知道答案吗?

扫码即可获的解题视频

原文地址:https://www.cnblogs.com/nmb123/p/12144055.html

时间: 2024-08-29 13:40:28

shell三剑客之grep!的相关文章

shell三剑客之grep

前言 grep怎么出来的? 这就需要我们庖丁解牛了,"g/RE/p"看到没,就是这样"global Regular Expression print"==>"全局查找正则表达式(RE)并且打印结果行." grep家族由命令grep,egrep和fgrep组成.后两者是前者的变体.一个胖了,一个瘦了而已. 使用grep的好处就在于,不需要启动编辑器就可以执行查找操作,也用不着把pattern放在"//"里,使用grep要比

Shell三剑客_1.grep

1.grep ?grep:global regular expression print__全局正则表达式输出. ?grep 命令用于查找(过滤)文件里符合条件的字符串. ?grep与正则表达式联系紧密. ■语法 grep -[参数] <文件名> ■常用参数 -A<n(行数)> : 抽出并显示符合要查询内容的行,并显示该行之后n行的内容. -B<n(行数)> : 抽出并显示符合要查询内容的行,并显示该行之前n行的内容. -c : 显示符合要查询内容行的行数数. -i 

Linux三剑客之grep

linux三剑客之grep grep命令是一个强大的文本搜索工具,全称是Global Regular Expression Print,它能使用正则表达式搜索文本,并把匹配的行打印出来,使用权限是所有用户 1.使用格式 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] grep 关键词 文本文件 2.比较常用的参数 -c:仅显示找到的次数 -i:忽略大小写 -n:显示行号 -o:只显示

linux文本处理三剑客之grep

  一.linux文本处理三剑客介绍 linux中文本三剑客包括grep(egrep,fgrep),sed,awk,三者基本的功能如下: 工具名称 功能 grep,egrep,fgrep 文本过滤工具(搜索工具) sed stream editor, 流编辑器:文本编辑工具 awk 文本报告生成器 二.grep工具详解 1.grep的介绍: grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行

linux 文件管理和文本三剑客之一grep,以及正则的使用

1:文件权限 用户对文件的访问有三种:r(读),w(写),x.对于文件和目录有点区别. 文件: r:使用文本查看工具可以查看其文件内容. w:使用文本编辑工具可以编辑其文件内容. x:可向内核请求将此文件运行为进城执行. 目录: r:可以使用ls命令列出文件下子目录和文件的列表. w:可以在此目录中创建和删除文件. x:可使用'ls -l'命令列出目录及子目录的文件属性,可以使用cd切换工作目录为制定目录. 文件权限主要针对三类对象进行定义. owner:属主  , group:属组, othe

文本处理三剑客之grep

文本处理三剑客之grep 正则表达式(regex) 文本处理工具 grep egrep 试验环境:CentOS 7.2 正则表达式 Linux的哲学之一"一切皆文件",学习Linux应得掌握其基本的文本处理工具,这些工具主要包括: 文件内容:less和cat 文件截取:head和tail 文件抽取:cut 关键字搜索:grep 正则表达式是计算机科学中的一个概念,又称作regex或RE, 正则表达式诞生于对神经网络研究的需要,随着技术发展,正则表达式已经广泛应用于各个领域,其主要应用对

Linux文本处理三剑客之grep一族与正则表达式

一,grep一族是什么? Linux上有三种常用的文本处理工具,分别为:grep(egrep.fgrep).sed.awk.这三者被称为Linux文本处理三剑客. grep一族:文本搜索工具 grep:支持使用基本正则表达式: egrep:支持使用扩展正则表达式,相当于grep -E: fgrep:不支持使用正则表达式,相当于grep -F; [PS:fgrep不需要加载正则表达式引擎,因此速度较快,fgrep的搜索效率在当文件达到几亿行时就能体现出来.(大型web网站一天的日志量都是几亿行的,

llinux文本三剑客之grep、egrep及相应的正则表达式和用法

Linux文本三剑客之grep族以及相应的正则表达式 Grep族是什么? Grep族是linux学习中搜索文本的重要工具,它基于使用正则表达式来快速简洁的搜索你想要查看的文本.是搜索文本的不二之选 什么时候及在哪里使用grep呢? 上面咱们说到了,grep是文本搜索工具,所以当我们要搜索文本,有搜索文本的需要时我们就可以是使用grep工具. 下面我们来谈谈如何使用grep族命令以及涉及到的正则表达式的内容 文本搜索工具:grep族:grep, egrep, fgrep Linux上文本处理三剑客

Linux三剑客之grep、egrep及正则表达式使用详解

Linux三剑客是Linux中非常强悍的文本处理工具,掌握三剑客,文处理已想必会有三剑在手,天下我有的感觉,三剑客之grep家族擅长文本搜索,支持以正则表达式进行文本搜索,使得grep非常强悍,以下内容就grep,egrep和正则表达式展开 Linux文本工具三剑客:        grep.egrep.fgrep:文本搜索工具 sed:流编辑器,也是行编辑器 awk:文本格式化工具,文版报告生成器 正则表达式:是由一类字符所书写出的模式(pattern) 作用:配合支持使用正则表达式的文本搜索