Linux三大工具

Posted 优雅的心情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux三大工具相关的知识,希望对你有一定的参考价值。

一、Linux 三剑客简介

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

  • 第一个工具是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据。

  • 第二个工具是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中的分段。

  • 第三个工具是 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,我们接下来看如何具体的使用它们。

三、grep

1.grep基本用法

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

然后通过 grep hogwarts hello.txt 指令查找数据,指令中间的参数是正则表达式,指令后面的参数是文件名。
你可以看到 grep 把 hello from hogwarts 从文件中提取出来。
在这里插入图片描述
你还可以通过 grep 把 testerhome 提取出来,通过 cat 指令可以看到在 hello.txt 中有三行数据。
在这里插入图片描述

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

2.grep正则表达式用法

接下来,我们学习如何使用正则表达式获取以字母 s 或 t 开头的后面跟任意两个字符的数据,输入 grep “[st]…” hello.tex 指令,其中 [] 表示正则表达式,…表示后面跟任意的两个字符,你可以看到输出了两条数据。
在这里插入图片描述
我们还可以通过 -o 指令只打印匹配的内容,输入 grep -o “[st]…” hello.tex 指令,你可以看到只打印了匹配到的内容,而不是整条数据。
在这里插入图片描述
grep 还有一些其他的指令,比如 -i 可以忽略字符大小写。

-v 表示将匹配到的内容过滤掉,比如我们输入 grep -v “[st]…” hello.tex 指令,只显示了一条数据,过滤掉了匹配正则条件的内容。
在这里插入图片描述
-o 表示只打印匹配的数据,-E 表示支持使用扩展正则表达式,我们接下来详细了解下 pattern 正则表达式。

我把正则表达式分为两类:
第一类称为基本表达式,基本表达式包括了典型的正则标识符。
^表示开头;
$表示结尾;
[]表示任意匹配项;
*表示0个或多个;
.表示任意字符。

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

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

我们举个例子,输入 grep -E “(hog|home)” /tmp/hello.tex 指令,输出结果分别匹配了 hog 与 home。
在这里插入图片描述
但如果你的指令中不含 -E,则指令不支持扩展正则,这个时候你会发现它什么都匹配不到。

如果不使用 -E,我们可以使用 \\ 转义符对匹配条件进行转义,也可以达到同样的效果
在这里插入图片描述

以上是关于Linux三大工具的主要内容,如果未能解决你的问题,请参考以下文章

linux三大文件处理工具(grep/sed/awk)

Linux中最常用的三大文本处理工具之grep

linux中进程管理的三大工具及进程查看命令

OS_Linux三大文本处理工具之grep

正则表达式及Linux三大文本处理工具

Android UI 布局分析三大工具