简介

  • 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}'

Shell系列(22)- 字符截取命令awk的更多相关文章

  1. Shell 字符截取命令 awk

    awk命令# awk '条件1{动作1} 条件2{动作2}….' 文件名一般使用关系表达式作为条件动作:1.格式化输出 2.流程控制语句 处理cut命令无法截取空格的列 例子:截取出磁盘使用率 df ...

  2. shell编程-1.字符截取命令-列截取awk+printf

  3. shell编程-1.字符截取命令-列截取cut

  4. 第10章 Shell编程(2)_字符截取命令

    2. 字符截取命令 2.1 cut字段提取命令(grep提取行,cut提取列) (1)cut命令:#cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符分割列,默认 ...

  5. Linux命令集锦之·字符截取命令

    时间:2018-11-15 记录:byzqy 字符截取命令: cut.printf.awk.sed cut $ cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符 ...

  6. Shell系列(23)- 字符截取命令sed

    简述 字符替换命令sed 和vi功能相似,但是vi是给用户用的,sed是给脚本用的 sed是一种几乎包括在所有的UNIX平台(包括Linux)的轻量级流编辑器.s sed主要是用来将数据进行选取.替换 ...

  7. linux常用命令 cut字符截取命令

    cut 字符截取 cut [选项] 文件名 选项 -f 列号: 提取第几列 -d 分割符:按照指定的分隔符分割列 默认使用制表符("tab")进行分割 ssgao:Download ...

  8. [Shell]字符截取命令:cut, printf, awk, sed

    ------------------------------------------------------------------------------------------- [cut命令] ...

  9. Shell系列(21)- 字符截取命令printf

    作用 printf是标准格式输出命令,控制输出格式,不会自动加入换行符.awk会用到该条命令 命令 printf '输出类型输出格式' 输出内容 #''双引号不能少,输出类型和输出格式之间没有空格 输 ...

随机推荐

  1. TreeUtil.java

    package com.infish.util; import java.lang.reflect.Method; import java.util.ArrayList; import java.ut ...

  2. innodb是如何存数据的?yyds

    前言 如果你使用过mysql数据库,对它的存储引擎:innodb,一定不会感到陌生. 众所周知,在mysql8以前,默认的存储引擎是:myslam.但mysql8之后,默认的存储引擎已经变成了:inn ...

  3. 【软件工具】Git 使用总结

    本地库就是由 对象 和 引用 构成的,或者叫 Repositories;下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 ...

  4. mysql悲观锁和乐观锁

    悲观锁 查出来的数据必须是根据索引查出来的,不然锁表. # 语法 select * from table where id = 1 for update; 乐观锁 使用一个标识 cas 比较后替换 如 ...

  5. 《深入浅出vue.js》阅读笔记之(object)变化侦测

    1.什么是变化侦测? 通常,在运行时应用内部的状态会不断发生变化,此时需要不停地重新渲染页面,这时如何确定状态中发生了什么变化? 变化侦测就是用来解决这个问题的,它分为两种类型,一种是"推& ...

  6. Ztree 树插件 树节点名称太长的解决方案

    样式允许的情况下 给背景div加滚动条.. 或者使用省略号方法:使用addDiyDom   http://blog.csdn.net/zhengbo0/article/details/17759543 ...

  7. NLP与深度学习(二)循环神经网络

    1. 循环神经网络 在介绍循环神经网络之前,我们先考虑一个大家阅读文章的场景.一般在阅读一个句子时,我们是一个字或是一个词的阅读,而在阅读的同时,我们能够记住前几个词或是前几句的内容.这样我们便能理解 ...

  8. 详解 Apache SkyWalking 跨进程传播协议

    简介 SkyWalking 跨进程传播协议是用于上下文的传播,本文介绍的版本是3.0,也被称为为sw8协议. Header项 Header应该是上下文传播的最低要求. Header名称:sw8. He ...

  9. Qt中的Q_PROPERTY宏浅析

    1. Q_PROPERTY Qt提供了一个绝妙的属性系统,Q_PROPERTY()是一个宏,用来在一个类中声明一个属性property,由于该宏是qt特有的,需要用moc进行编译,故必须继承于QObj ...

  10. Spring系列.Environment接口

    Environment 接口介绍 在 Spring 中,Environment 接口主要管理应用程序两个方面的内容:profile 和 properties. profile 可以简单的等同于环境,比 ...