二维码
找好货

扫一扫关注

当前位置: 首页 » 资讯 » 专题 » 正文

拉勾教育_学好测试,月薪 30k+ 是真的吗?

放大字体  缩小字体 发布日期:2022-07-03 02:00:43    作者:life    浏览次数:1683    评论:0
导读

你好,我是你的测试课老师思寒,本内容来自拉勾教育专栏《测试开发核心技术 46 讲》在本课时我将讲解 Linux 三剑客,以及它们的具体使用语法。​ Linux 三剑客简介首先,我们来了解下 Linux 三剑客具体指什么? 第一个工具是 gr

你好,我是你的测试课老师思寒,本内容来自拉勾教育专栏《测试开发核心技术 46 讲》


在本课时我将讲解 Linux 三剑客,以及它们的具体使用语法。​

Linux 三剑客简介

首先,我们来了解下 Linux 三剑客具体指什么?

  1. 第一个工具是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据。
  2. 第二个工具是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中的分段。
  3. 第三个工具是 sed,它是 stream editor 流式编辑器的简称,可以定位到数据行并对数据进行增删改查操作。

因为它们三个组合使用的功能非常的强大,几乎完美的应对了 Shell 中的数据分析场景,于是人们把这三个工具统称为 Linux 三剑客。

Linux 三剑客价值

接下来,我们通过对三剑客与 SQL 进行类比,来具体看看它们到底能做些什么?

  • grep 相当于 SQL 的 select *from table,它可以进行数据的查找与定位。
  • awk 相当于 SQL 的 select field from table,它可以进行数据切片。
  • sed 相当于 SQL 的 update table set field=new where field=old,它可以对数据进行修改。

你可以发现,grep 和 awk 可以进行组合使用,来达到查找数据并对数据进行分割的目的,grep 也可以与 sed 组合使用,达到查找数据并修改的目的,它们三个还可以组合在一起使用来完成一系列的操作,就相当于大数据处理中的 Map-Reduce,我们接下来看如何具体的使用它们。

本内容来自拉勾教育专栏《测试开发核心技术 46 讲》

grep

首先,我们来看下如何使用 grep,grep 用于根据正则表达式查找相关内容并打印对应的数据,我们打开 Shell 环境,通过 vim/tmp/hello.txt 命令创建一个文件,并在文件内输入三条数据:

  • hello from hogwarts
  • hello from sevenriby
  • hello from testerhome

然后通过 grep hogwarts /tmp/hello.txt 指令查找数据,指令中间的参数是正则表达式,指令后面的参数是文件名。

你可以看到 grep 把 hello from hogwarts 从文件中提取出来。

你还可以通过 grep 把 testerhome 提取出来,通过 cat 指令可以看到在 hello.txt 中有三行数据。

如果我们输入 grep hello 指令,它会把三条数据都提取出来。这就是 grep 的第一个作用,根据指定的正则表达式查取对应的数据,我们上面的演示用的是简单的字符串。

接下来,我们学习如何使用正则表达式获取以字母 s 或 t 开头的后面跟任意两个字符的数据,输入 grep "[st].." /tmp/hello.tex 指令,其中 [] 表示正则表达式,..表示后面跟任意的两个字符,你可以看到输出了两条数据。

我们还可以通过 -o 指令只打印匹配的内容,输入 grep -o "[st].." /tmp/hello.tex 指令,你可以看到只打印了匹配到的内容,而不是整条数据。

grep 还有一些其他的指令,比如 -i 可以忽略字符大小写。

-v 表示将匹配到的内容过滤掉,比如我们输入 grep -v "[st].." /tmp/hello.tex 指令,只显示了一条数据,过滤掉了匹配正则条件的内容。

-o 表示只打印匹配的数据,-E 表示支持使用扩展正则表达式,我们接下来详细了解下 pattern 正则表达式。

我把正则表达式分为两类,第一类称为基本表达式,基本表达式包括了典型的正则标识符。

  • ^表示开头
  • $表示结尾
  • []表示任意匹配项
  • *表示0个或多个
  • .表示任意字符

第二类是扩展表达式,它在基础表达式的基础上做了一些扩展,支持了更高级的语法和更复杂的条件。

  • ?表示非贪婪匹配
  • + 表示一个或多个
  • () 表示分组
  • {} 表示一个范围的约束
  • | 表示匹配多个表达式中的任何一个

我们举个例子,输入 grep -E "(hog|home)" /tmp/hello.tex 指令,输出结果分别匹配了 hog 与 home。

但如果你的指令中不含 -E,则指令不支持扩展正则,这个时候你会发现它什么都匹配不到。

如果不使用 -E,我们可以使用 转义符对匹配条件进行转义,也可以达到同样的效果

awk

了解完 grep 如何使用,我们接下来学习如何使用 awk。

awk 是 Linux 下的一个命令,同时也是一种语言解析引擎,它的功能非常强大,具备完整的编程特性,可以执行命令、进行网络请求等操作。所以精通 awk 是一个 Linux 工作者必备的技能。我们接下来看下 awk 的语法 awk 'pattern{action}' 的相关知识,pattern是匹配条件,action表示具体需要做的处理。

pettern 语法在一定程度上可以代替 grep。

举个例子,使用双 / 表示一个正则匹配,我们输入 awk '/[st]../' /tmp/hello.txt 指令,你可以看到和 grep 一样,轻松地打印出匹配到的内容,所以在一定程度上 awk 可以替代 grep,但它没有使用 grep 简洁。

还有表示区间选择,比如我们在 1、2、3 之间,使用 awk '$0>2' 指令打印大于 2 的数据 3。

还有一个参数叫 NR,代表记录数,比如输入 awk 'NR>1' /tmp/hello.tex 指令打印去掉第一行的数据。

pattern有非常丰富的语法,你可以课后自己进行练习,同时 awk 还有几个标准的内置变量。

  • FS 表示字段分隔符
  • OFS 表示输出数据的字段分隔符
  • RS 表示记录分隔符
  • ORS 表示输出字段的行分隔符
  • NF 表示字段数
  • NR 表示记录数

比如,我们输入 awk '{print NR,NF}' /tmp/hello.txt 指令,输出显示 hello from hogwarts 被空格分隔成了三个字段,并且 hello.txt 文件中的三条数据字段数都是 3。

我们输入 awk -Fo '{print NR,NF}' /tmp/hello.txt 指令,输出显示我们以 o 为分隔符,将 hello from hogwarts 分为了 4 个字段,下面两条数据以此类推。

我们还可以使用 BEGIN 指令,能够得到同样的结果。

接下来,学习 awk 的字段数据处理。

我们通过 -F 参数指定字段分隔符,这里需要注意 awk 有一个 $0~$N~$NF 的特殊参数,

假设我们以 t 为分隔符打印 $1 和 $2,我们来分析夏结果,

当输入 $1 以 t 为分隔符的时候,t 之前的 hello from hogwar 是 $1 记录,t 之后的 s 是 $2 记录,以此类推,也就是说 awk 通过解析数据内容,然后会根据默认的分隔符打印出每个字段的具体内容,我们输入 awk 'OFS=''-''{print $1,$2,$3}' 并打印输出。

可以看到,hello 指定为 $1,from 指定为 $2,并将默认的空格分隔符替换为 -,我们可以通过 $ 获取具体字段并对其进行相关操作,接下来我们学习 awk 的字段分隔。

这里有几个例子,课后你可以试验一下,同样 awk 也可以实现简单的数据计算功能,比如说awk 'BEGIN{print 10000/3}'。

除了这些之外,awk 还支持词典,用来统计一些特征和数据,它类似于 Java 的 hash 和 Python 的字典。awk 的语法非常灵活,希望你在课后能够把文档打印出来仔细阅读,它可以帮助你在日后的数据分析工作中更加得心应手。

sed

然后我们再看第三个工具流式编辑器 sed。sed 的语法和 awk 有点类似,只不过具体的用法不太一样。

  • sed[addr]X[opptions],其中 [] 定义了一个范围,x位是具体操作,options表示进行数据修改的选项。
  • -e 表示可以指定表达式。
  • sed -n '2p' 2 表示打印第二行的数据。
  • s 表示查找并替换。

比如我们输入 sed 's#testerhome#world#' /tmp/hello.txt 指令,其中 s 后面可以跟任意符号,比如 / 或 # 都可以表示分隔符,它会用后面的内容替换前面的内容。

  • -i 表示直接修改源文件。
  • -E 支持扩展表达式。

比如我们把以 t 开头的三个字符都替换成 xxx。你可以看到,后面的 ter 没有改变,是因为需要添加一个额外的标记符 /g。

/g 表示除了替换第一个匹配的字符以外还会把第二个也替换掉,这就是 sed 的用法,你看到 sed 主要帮助我们编辑文件。

那么关于它的匹配符 pattern,你可以给定具体的行数也可以通过正则匹配一个范围,在某个范围内做一个修改;区间范围也是一个类似的用法,你会发现它和 awk 语法很像。

action 与 awk 的不同点在于 awk 专注于数据的提取,而 sed 更专注于数据的修改,sed 的重要作用是完成对数据的增删改查工作,比如:

  • d 是删除
  • p 是打印
  • s 是查找并进行替换
  • 1 2 可以根据匹配的数据进行分组处理

所以 sed 也是一个灵活强大的工具,一旦你掌握了上面的全部内容,那么说明你对三剑客已经入门了。


好了,本课时的内容就全部讲完了,下一课时我将分享“Linux 三剑客(下)”,重点讲解Shell Piping 管道的相关知识,记得来听课啊,下节课见。


本内容来自拉勾教育专栏《测试开发核心技术 46 讲》


版权声明:本文版权归属拉勾教育及该专栏作者,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者必究。

 
关键词: 拉勾教育
(文/life)
打赏
免责声明
• 
本文为life原创作品,作者: life。欢迎转载,转载请注明原文出处:https://www.114618.com/news/10151.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
0相关评论
 

(c)2008-2018 找好货 B2B SYSTEM All Rights Reserved

京ICP备2022008976号-2