AWK-入门指南

Awk是一种便于使用且表达能力强的程序设计语言,可应用于各种计算和数据处理任务

1.1起步

加入我们现在有一个文件 文件名emp.txt 里面存放的是员工的每小时的薪资 每个员工单独占一行 如下所示

Beth    4.00    0
Dan     3.75    0
kathy   4.00    10
Mark    5.00    20
Mary    5.50    22
Susie   4.25    18

现在你想打印出工作时间超过零小时的员工的姓名和工资(薪资乘以时间)。
使用命令及输出内容

[root@ localhost ~]# awk '$3 >0 { print $1,$2 * $3}' emp.txt
kathy 40
Mark 100
Mary 121
Susie 76.5

命令讲解:$ > 3 是我们的判断条件 { print $1,$2 * $3 } 这个是我们想要输出的内容 包括员工的名字以及工资 emp.txt 是我们要读取的文件名字

打印工作时间等于0 个小时的工作人员

使用命令 及输出结果

[root@ localhost ~]# awk '$3 == 0 { print $1 }' emp.txt
Beth
Dan

打印名字叫kathy 并且工作小时大于0 的名字 和薪资总和
比如

[root@ localhost ~]# awk '$3==0' emp.txt
Beth    4.00    0
Dan    3.75    0

1.2简单输出

打印每一行
如果一个动作没有任何模式 ,这个动作会对搜友输入的行进行操作,print语句用来输出当前输入的行

[root@ localhost ~]# awk '{print}' emp.txt
Beth    4.00    0
Dan    3.75    0
kathy    4.00    10
Mark    5.00    20
Mary    5.50    22
Susie    4.25    18

输出所有输入的内容到标准输出由 $0表示整行

[root@ localhost ~]# awk '{print $0}' emp.txt
Beth    4.00    0
Dan    3.75    0
kathy    4.00    10
Mark    5.00    20
Mary    5.50    22
Susie    4.25    18

打印特定字段

[root@ localhost ~]# awk '{print $1,$3}' emp.txt
Beth 0
Dan 0
kathy 10
Mark 20
Mary 22
Susie 18

在print语句种被逗号分隔的表达式,在默认情况下 他们会将用一个空格分割来输出,每一行print生成的内容都会以一个换行字符作为结束,但这些默认行为都可以自定义。

NF,字段数量

依次打印出每一行的字段数量,第一个字段数量,最后一个字段的值:
[root@ localhost ~]# awk '{print NF,$1,$NF}' emp.txt
3 Beth 0
3 Dan 0
3 kathy 10
3 Mark 20
3 Mary 22
3 Susie 18

计算和打印

打印出姓名和员工的合计支出(以小时计算)
[root@ localhost ~]# awk '{print $1,$2*$3}' emp.txt
Beth 0
Dan 0
kathy 40
Mark 100
Mary 121
Susie 76.5

打印行号

AWK提供了一个内建变量,叫做NR,它会存储当前已经读取了多少行的计数,我们可以使用NR和$0给文件每一行加上行号

[root@ localhost ~]# awk '{print NR,$0}' emp.txt
1 Beth    4.00    0
2 Dan     3.75    0
3 kathy   4.00    10
4 Mark    5.00    20
5 Mary    5.50    22
6 Susie   4.25    18

在输出中添加内容

当然也可以在字段中间或者计算的值中间打印输出想要的内容:
[root@ localhost ~]# awk '{print "total pay for",$1,"is",$2*$3}' emp.txt
total pay for Beth is 0
total pay for Dan is 0
total pay for kathy is 40
total pay for Mark is 100
total pay for Mary
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值