Shell day5 awk基础语法

概述

  • awk编程语言/数据处理引擎
  • 创造者:Aho,Weinberger,Kernighan
  • 基于模式匹配检测输入文本,逐行处理并输出
  • 通常用在Shell脚本中,获取指定的数据
  • 单独用时,可对文本数据做统计

语法格式
主要用法

  • 格式1:前置命令|awk [选项] '[条件]{指令}'    多条语句可以分号分隔
  • 格式2:awk[选项] '[条件]{指令}'  文件.. ..
[root@zabbix-server day5]# more  test.txt 
Hello the world!
Welcome to beijing
#读取test.txt 第一行1列和第3列再打印,再继续读取下一行
[root@zabbix-server day5]# awk '{print $1,$3}' test.txt
Hello world!
Welcome beijing
  • 常用选项:-F可以指定分隔符,默认分隔符为(空格或Tab键)
[root@zabbix-server day5]# awk -F: '{print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4

awk内置变量

  • 内置变量都有特殊含义,可以直接使用

[root@zabbix-server day5]# cat test.txt 
Hello the world!
Welcome to beijing
#统计当前字段行的列数
[root@zabbix-server day5]# awk '{print NF}' test.txt 
3
3
#打印倒数第3列
[root@zabbix-server day5]# awk '{print $(NF-2)}' test.txt 
Hello
Welcome
#打印倒数第1列
[root@zabbix-server day5]# awk '{print $(NF-0)}' test.txt 
world!
beijing
#NR统计行号
[root@zabbix-server day5]# awk '{print NR}' test.txt 
1
2
#统计列数
[root@zabbix-server day5]# awk '{print NF}' test.txt 
3
3[root@zabbix-server day5]# awk -F: '{print NF}' test.txt 
1
1
[root@zabbix-server day5]# awk -F: '{print NR}' test.txt 
1
2
[root@zabbix-server day5]# more test.txt 
Hello  world!
Welcome to beijing
Let me check it.
#打印每行的最后一列
[root@zabbix-server day5]# awk '{print $NF}' test.txt 
world!
beijing
it.
#打印每行倒数第2列
[root@zabbix-server day5]# awk '{print $(NF-1)}' test.txt 
Hello
to
check
#打印没每行行号(NR),与每行的列数(NF),以冒号(-F:)为分隔符 
[root@zabbix-server day5]# awk -F: '{print NR,NF}' /etc/passwd
1 7
2 7
3 7
#打印最后一列
[root@zabbix-server day5]# awk -F: '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
#打印常量需引号
[root@zabbix-server day5]# awk -F: '"用户名:",$1,"解释器:",$7.:",$7}' /etc/passwd
用户名: root 解释器: /bin/bash
用户名: bin 解释器: /sbin/nologin
用户名: daemon 解释器: /sbin/nologin

awk过滤的时机

[root@zabbix-server day5]# awk 'BEGIN {a=34;print a+12}'
46
[root@zabbix-server day5]# awk 'BEGIN{x=0}/\<bash$/{x++}END{print x}' /etc/passwd
2
[root@zabbix-server day5]# awk -F: 'BEGIN{print NR}END{print NR}' /etc/passwd
0
49

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值