简介

  • awk是一个数据处理工具,相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分成数个”字段“来处理
  • awk的流程是依次读取每一行数据,读取完一行数据后,进行条件判断,如果满足条件,就执行该条件对应的动作,没有条件直接执行动作
  • 其中文件名为$0,剩下的每一列依次为$1\$2...,判断完一行后,继续判断下一行,直到知道文件全部判断完
  • 对比cut而言,awk可以对以空格为分隔符进行操作;可以进行条件判断;另外字符截取针对有固定分隔符或者有规律的分隔符推荐使用cut命令

awk

命令格式

awk '条件1{动作1}条件2{动作2}...' 文件名

条件

  • 一般使用关系表达式作为条件
  • x > 10判断变量x是否大于10
  • x > =10大于等于
  • x <= 10小于等于

动作

  • 格式化输出printf
  • 流程控制语句if…do…done

例子

awk '{printf $2 "\t" $3 "\n"}' zifu1.text

例子-任务

任务:获取指定系统已用硬盘空间百分比

命令:

  • df -h:查看磁盘磁盘占用空间
  • df -h | grep "/dev/sda":查看/dev/sda文件系统的磁盘占用空间
  • df -h | grep "/dev/sda" | awk '{print $5}':显示/dev/sda文件系统的磁盘占用空间,只显示已用那一列的数据
  • df -h | grep "/dev/sda" | awk '{print $5}' | cut -d "%" -f 1:显示/dev/sda文件系统的磁盘占用空间,只显示已用那一列的数据,不要百分比,只保留数字

BEGIN

  • awk动作执行前操作,第一行显示或运行
  • df -h | grep "/dev/sda" | awk 'BEGIN{print "这是sda已用空间"}{print $5}'

END

  • awk动作执行后的操作,最后一行显示或运行
  • df -h | grep "/dev/sda" | awk 'END{print "这是sda已用空间"}{print $5}'

FS内置变量

  • awk分隔符默认TAB制表符以及空格,如果我们要指定分隔符就需要用到FS内置变量
  • FS内置变量放在BEGIN里面
  • #例子
  • cat /etc/passwd | grep /bin/bash | awk '{FS=":"}{print $1 "\t" $3}'
  • cat /etc/passwd | grep /bin/bash | awk 'BEGIN{FS=":"}{print $1 "\t" $3}

关系运算符

任务:打印成绩好的学生姓名

命令:

  • cat zifu1.text | grep -v "name" | awk '$4>60{print $2}'
  • cat zifu1.text | grep -v "name" \    命令太长时,用换行符下划线\,切到下一行继续写
  • #> | awk '$4>70{print $2}'

最新文章

  1. python3的pickle导致乱码
  2. 关于JSTL一些需要说明的
  3. blend 从无到有系列之添加自定义Rectangle样式指定到资源文件
  4. Shell概述
  5. struts2与spring mvc 的比较
  6. Linux概述
  7. WordPress Simple Login Registration插件’username‘参数跨站脚本漏洞
  8. Oracle EBS-SQL (INV-10):检查库存接口.sql
  9. python 默认编码( UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode)
  10. 几乎没用到过的css 样式
  11. OpenStack/devstack with Neutron on Ubuntu 14 (1)
  12. [OIDC in Action] 1. 基于OIDC(OpenID Connect)的SSO
  13. HTML基础教程-段落
  14. 学生信息管理小系统(以XML为存储方式)
  15. Android 异步框架 RxJava2
  16. 【论文速读】Chuhui Xue_ECCV2018_Accurate Scene Text Detection through Border Semantics Awareness and Bootstrapping
  17. intellij idea 相关设置
  18. X--名称空间详解
  19. 框架源码系列二:手写Spring-IOC和Spring-DI(IOC分析、IOC设计实现、DI分析、DI实现)
  20. Java知多少(47)多重catch语句的使用

热门文章

  1. Linux 进程间传递文件描述符
  2. 【LeetCode】26. 删除有序数组中的重复项
  3. sentinel使用(结合OpenFeign)
  4. C++ template模板编程
  5. spring加载Bean的解析过程(二)
  6. GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组
  7. 带你走进MySQL全新高可用解决方案-MGR
  8. 巧用模糊实现视觉的 3D 效果
  9. MutationObserver API
  10. vue 微信二维码扫码登录,附加 自定义样式