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 组合使用,达到查找数据并修改的目的,它们三个还可以组合在一起使用来完成一系列的操作。

1、grep 的语法 grep正则表达式 。用于根据正则表达式查找相关内容并打印对应的数据。可以理解为sql中的select角色。
例如:grep hello /tmp/hello.tex 把文件中包含hello的打印出来
常见的语法:
-v 表示将匹配到的内容过滤掉
-o 表示只打印匹配的数据
-E 表示支持使用扩展正则表达式
例如:
grep “[st]…” /tmp/hello.tex 把文件中s或t开头的打印出来
grep -o “[st]…” /tmp/hello.tex 只打印匹配到的内容
grep -v “[st]…” /tmp/hello.tex 打印过滤掉的内容

2、awk 的语法 awk ‘pattern{action}’ 的相关知识,pattern 是匹配条件,action 表示具体需要做的处理。
pattern有非常丰富的语法,你可以课后自己进行练习,同时 awk 还有几个标准的内置变量。
FS 表示字段分隔符
OFS 表示输出数据的字段分隔符
RS 表示记录分隔符
ORS 表示输出字段的行分隔符
NF 表示字段数
NR 表示记录数
例如:
awk ‘NR>1’ /tmp/hello.tex 指令打印去掉第一行的数据
awk -Fo ‘{print NR,NF}’ /tmp/hello.tex 输出显示以 o 为分隔符的字段数和记录数
awk ‘OFS=’’-’’{print $1,$2,$3}’ /tmp/hello.tex
awk BEGIN{FS=“t”}{print NR,NF,$1,$2} /tmp/hello.tex 以t为分割,输出相应内容
awk ‘BEGIN{print 10000/3}’ 计算

3、Sed 的语法 sed[addr]X[opptions]:其中 [] 定义了一个范围,x位是具体操作,options表示进行数据修改的选项。
-e 表示可以指定表达式。
sed -n ‘2p’ 2 表示打印第二行的数据。
s 表示查找并替换。
-i 表示直接修改源文件
-E 支持扩展表达式。
d 是删除
p 是打印
s 是查找并进行替换
例如:sed ‘s#testerhome#world#’ /tmp/hello.txt 指令,其中 s 后面可以跟任意符号,比如 / 或 # 都可以表示分隔符,它会用后面的内容替换前面的内容。
sed ‘s/t…/XXX/g’ /tmp/hello.txt

4、管道:接下来,我们学习管道在整个输入输出过程中发挥的作用,以及管道的具体用法。在日常工作中,通常需要特殊的方法将多个程序串联起来,将程序 1 的输出 1 作为程序 2 的输入,在 Shell 中这个特殊的方法就是管道。
1)cat /tmp/hello.txt | grep testerhome 通过管道打印包含 testerhome 的信息行。
2)cat /tmp/hello.txt | grep testerhome | awk ‘{print $3}’ 因为 hello from testerhome 是以空格隔开的,所以指令中的 $3 表示第三个元素。
3)cat /tmp/hello.txt | grep testerhome | awk ‘{print $3}’ | sed ‘s#tester#dev#’ 再继续使用管道将 testerhome 中的 tester 替换成 dev
通过上面的例子可以看到通过管道可以把grep、awk、send结合一起来用,可以实现非常好的执行效果,它可以帮助我们处理一些复杂的数据处理工作,提高我们的工作效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值