Shell系列(22)- 字符截取命令awk
简介
- 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的更多相关文章
- Shell 字符截取命令 awk
awk命令# awk '条件1{动作1} 条件2{动作2}….' 文件名一般使用关系表达式作为条件动作:1.格式化输出 2.流程控制语句 处理cut命令无法截取空格的列 例子:截取出磁盘使用率 df ...
- shell编程-1.字符截取命令-列截取awk+printf
- shell编程-1.字符截取命令-列截取cut
- 第10章 Shell编程(2)_字符截取命令
2. 字符截取命令 2.1 cut字段提取命令(grep提取行,cut提取列) (1)cut命令:#cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符分割列,默认 ...
- Linux命令集锦之·字符截取命令
时间:2018-11-15 记录:byzqy 字符截取命令: cut.printf.awk.sed cut $ cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符 ...
- Shell系列(23)- 字符截取命令sed
简述 字符替换命令sed 和vi功能相似,但是vi是给用户用的,sed是给脚本用的 sed是一种几乎包括在所有的UNIX平台(包括Linux)的轻量级流编辑器.s sed主要是用来将数据进行选取.替换 ...
- linux常用命令 cut字符截取命令
cut 字符截取 cut [选项] 文件名 选项 -f 列号: 提取第几列 -d 分割符:按照指定的分隔符分割列 默认使用制表符("tab")进行分割 ssgao:Download ...
- [Shell]字符截取命令:cut, printf, awk, sed
------------------------------------------------------------------------------------------- [cut命令] ...
- Shell系列(21)- 字符截取命令printf
作用 printf是标准格式输出命令,控制输出格式,不会自动加入换行符.awk会用到该条命令 命令 printf '输出类型输出格式' 输出内容 #''双引号不能少,输出类型和输出格式之间没有空格 输 ...
随机推荐
- MySQL JOIN的使用
JOIN的使用 JOIN 理论 MySQL 七种 JOIN 的 SQL 编写 环境搭建 # 创建部门表 CREATE TABLE tbl_dept ( id INT NOT NULL AUTO_INC ...
- 【网络编程】TCPIP-7-域名与网络地址
目录 前言 7. 域名与网络地址 7.1 IP 7.2 域名 7.3 DNS 7.4 IP地址与域名之间的转换 7.4.1 利用域名获取IP地址 7.4.2 利用IP地址获取域名 7.4.3 升级版的 ...
- 【AIOT】智能感知--人
From: https://liudongdong1.github.io/ 1. 人体存在感知 目标:检测环境中的所有人体,标记出每个人体的坐标位置:不限人体数量,适应中低空斜拍.人体轻度遮挡.截断等 ...
- 基于taro封装底下浮动弹窗组件
先看效果图: jsx: import Taro, { Component } from '@tarojs/taro' import { View, Image } from '@tarojs/comp ...
- ingress-nginx-controller 部署以及优化
一.说明 本文使用的ingress-nginx v1.0 最新版本,v1.0 适用于 Kubernetes 版本 >= v1.19 小于这个版本的k8s集群,请降级ingress-nginx. ...
- Docker是简介
Docker是什么 使用最广泛的开源容器引擎 一种操作系统级的虚拟化技术 依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制) 一个简单的应用程序打包工具 D ...
- JavaWeb学习总结——使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- 使用dom4j工具:读取xml标签(二)
package dom4j_read; import java.io.File; import java.util.List; import org.dom4j.Document; import or ...
- MongoDB学习笔记三 - MongooseAPI操作数据
在上一篇我们讲了如何通过Mongoose想数据库动态添加数据, 接下来我们一起来看一下如何通过Mongoose来对数据库进行增删改查等一系列操作 Model 对象的方法 remove(cinditio ...
- flink的watermark机制你学会了吗?
大家好,今天我们来聊一聊flink的Watermark机制. 这也是flink系列的的第一篇文章,如果对flink.大数据感兴趣的小伙伴,记得点个关注呀. 背景 flink作为先进的流水计算引擎, ...