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 '输出类型输出格式' 输出内容 #''双引号不能少,输出类型和输出格式之间没有空格 输 ...
随机推荐
- Spring源码解析之ConfigurationClassPostProcessor(一)
ConfigurationClassPostProcessor 在前面一个章节,笔者和大家介绍了在构造一个应用上下文时,spring会执行到PostProcessorRegistrationDeleg ...
- CAS 5.3使用MySQL数据库验证
一.本例环境说明 JDK 1.8 CAS 5.3 apache-maven-3.6.0 mysql-5.6.32 二.CAS 5.3基础环境搭建与验证 需要按照<CAS 5.3服务器搭建> ...
- Python 读写文件的正确方式
当你用 Python 写程序时,不论是简单的脚本,还是复杂的大型项目,其中最常见的操作就是读写文件.不管是简单的文本文件.繁杂的日志文件,还是分析图片等媒体文件中的字节数据,都需要用到 Python ...
- vue:Missing space before value for key 'components'
原因是Vue对语法比较严格,而eslint是一个语法检查工具,对语法要求极其苛刻严格,于是就error了 解决办法是关闭eslint的语法规则,找到build/webpack.base.conf.js ...
- Socket编程 Tcp和粘包
大多数程序员都要接触网络编程,Web开发天天和http打交道.稍微底层一点的程序员,就是TCP/UDP . 对程序员来说,Tcp/udp的核心是Socket编程. 我的浅薄的观点---------理解 ...
- C#中的集合类
集合相当于容器,用于将一系列相似的项组合在一起. 集合可以分为泛型集合类和非泛型集合类. 多数集合类都是派生自ICollection.IComparer.IEnumerable.IList.IDict ...
- (转)致Java程序员:你离架构师还差多远?
转至:https://blog.csdn.net/ityouknow/article/details/82782965 几乎每个Java程序员心中,都有着成为架构师的技术追求.那么,成为Java架构师 ...
- linux 端口80占用问题
主要是搭建一次ghost博客网站改成80端口无法启动提示被占用. 提示:80端口被占用,启动失败. netstat -ano 或者 netstat -apn | grep 80 没有发现占用80端口的 ...
- Spring第一课:核心API(三)
以上是Spring的核心部分,其中需要了解的是:BeanFactory.ApplicationContext[FileSystemXmlApplicationContext.ClassPathXmlA ...
- 媒体查询media query
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...