awk bc命令 linux_Linux三剑客awk命令的原理及基本命令讲解

Linux三剑客awk命令篇一:原理及基本命令

1、简单介绍:

awk是一个文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。

awk经过改进生成的新的版本nawk、gawk,现在默认linux系统下日常使用的是gawk

用命令可以查看正在应用的awk的来源(ls -l /bin/awk)。

如下图:

c8100b01-4d24-eb11-8da9-e4434bdf6706.png

awk提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。简单来说,awk在很多方面类似于shell编程语言

总结:

awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel)。处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。

2、 执行流程:

与sed命令相似均是一行行读取、处理.......

这里对比sed命令来分析。

sed如下图:

sed是从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行...

当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。

c9100b01-4d24-eb11-8da9-e4434bdf6706.png

不同之处:

awk会将一行分成数个字段来处理,并非像sed是一整行来处理。

ca100b01-4d24-eb11-8da9-e4434bdf6706.png

示意图:

cc100b01-4d24-eb11-8da9-e4434bdf6706.png

补充:

上图的默认分割符空白,即:空格或者tab。

3、 语法格式:、

(1) Awk完整语法

awk 'BEGIN{commands} pattern{commands}END{commands} ' file

BEGIN{commands}:

处理数据前执行的命令。

END{commands}:

处理完数据后执行的命令。

这两个命令可以省略。见(2)

(2) Awk基本语法

awk -F '分割符' '/模式/{动作} ' file

这里的'/模式/{动作} '是不是有点类似于sed的命令格式。

注意:

1、 指令使用''

2、 动作使用{}

3、 模式:

(1) 正则表达式(注意格式:/正则表达式/)

(2) 条件表达式(例如:>

总结:

这里的模式通俗来讲是用来找谁,而动作表示是干啥。

例如:一共3个橘子、两个柚子、壹个葡萄。

假设你现在想吃葡萄。

模式可以表示/葡萄/,动作表示{eat}。

4、 案例1

cat demo.txt

juzi juzi juzi youzi youzi putao

awk 'BEGIN{print "start find putao..."} /putao/{print "eat it"} END{print "end I get it..."}' demo.txt

//执行的BEGIN命令

start find putao...

//匹配到模式的行执行的动作

eat it

//执行的END命令

end I get it...

ce100b01-4d24-eb11-8da9-e4434bdf6706.png

案例2:

d1100b01-4d24-eb11-8da9-e4434bdf6706.png

下面我们来取该文件的第一个字段和最后一个字段

1、//只有动作没有模式

awk -F ':' '{print $1,$7}' /etc/passwd

补充:

//下期介绍了内部变量后可以使用如下方式

awk -F ':' '{print $1,$NF}' /etc/passwd

d2100b01-4d24-eb11-8da9-e4434bdf6706.png

2、 获取特定用户的登录shell

//即有模式也有动作

odysee:~/shellFiles_1$awk -F ':' '/^odysee/{print $1,$7}' /etc/passwd

odysee1 /bin/bash

odysee /bin/bash

以odysee为例

d3100b01-4d24-eb11-8da9-e4434bdf6706.png

3、 只有模式

awk -F ':' '/^odysee/' /etc/passwd

这里就和grep相似,显示$0正行数据。

d4100b01-4d24-eb11-8da9-e4434bdf6706.png

下一篇:

Linux三剑客awk命令篇二之命令操作符

欢迎大家给予宝贵的意见或者建议。

欢迎大家补充或者共享一些其他的方法。

感谢支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值