SHELL编程三剑客之awk详解

SHELL编程三剑客之awk详解

  awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将会使你的工作变的高大上。 awk 是三剑客的老大,利剑出鞘,必会不同凡响。

1、首先我们看一下常用的cut命令的基本使用方法,cut英文意思是切,它的功能和和awk基本相同,唯一不同的是awk可以说是cut的plus版本(但不是一个厂家)。

cut -d(指定以什么为分割符) -f(指定列)   第一列

#cut -d  ‘ ’ -f  5

cut无法切割以空格为分割符的数据。

2、awk的基本常用写法

awk  ‘条件一{动作一}条件二{动作二} ’  文件

当然我们也可用使用管道符|awk。。。。。

3、awk的基本写法

#我们使用printf的话最后必须要加上\n换号符号,$数字是表示第几列

df -h | awk '{printf $1 "\t" $5 "\n"}'

#如果使用print的话就不需要再多写一个\n了

df -h | awk '{print $1 "\t" $5}'

#注意,为了不想让两行数据黏在一起,所以中间需要用“\t”空格符隔开。最外面的必须是单引号,而里面的\t和\n必须使用双引号。

4、实例

  我们想试试判断linux的根分区的使用情况,或者是某个分区的使用情况,我们怎么判断呢。

#df -h | grep sda5 | awk '{print $5}' | cut -d '%' -f 1

解释:

df -h | grep sda5是我的根分区,awk抓取第五列,也就是拿到6%这个数字,但是不想要百分号,那我们在用cut切一下,就OK了

5、BEGIN(实际上就是在打印结果的开始打印里面动作的一句话)

#df -h | grep sda5 | awk 'BEGIN{print "This is the use of the root partition"}{print $5}' | cut -d '%' -f 1

BEGIN的关键用法。

#awk '{FS=":"}{print $1 "\t" $3}' /etc/passwd

#awk 'BEGIN{FS=":"}{print $1 "\t" $3}' /etc/passwd

关键:我们知道awk是每次提取的时候都是先读取第一行后,才开始执行后面的动作语句,所以第一行没有被处理。这个时候就需要使用BEGIN,这个时候它就会处理所有数据。

END的用法

有BEGIN当然就有END了

#awk  'END{print"END!!!"}{print $1 "\t" $3}' /etc/passwd

#和BEGIN的用法基本相同,只不过是在处理数据动作的最后加打印而已。

6、关系运算符

关系运算符:

>  大于

<  小于

=   等于 #这里的等于就把结果都改成这等于后面的数值,如下图

>=  大于等于

<=   小于等于 

df -h | awk '{print $5}' |cut -d "%" -f 1 | awk '$1 >5 {print $1}'  #打印磁盘使用情况大于百分之五的

df -h | awk '{print $5}' |cut -d "%" -f 1 | awk '$1 <5 {print $1}' #打印磁盘使用情况小于百分之五的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/456388.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习 | 探索朴素贝叶斯算法的应用

朴素贝叶斯算法是一种基于贝叶斯定理和特征条件独立假设的分类算法。它被广泛应用于文本分类、垃圾邮件过滤、情感分析等领域&#xff0c;并且在实际应用中表现出色。 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法&#xff1a; 1&#xff09;对于给定的待分类项r…

C++ STL精通之旅:向量、集合与映射等容器详解

目录 常用容器 顺序容器 向量vector 构造 尾接 & 尾删 中括号运算符 获取长度 清空 判空 改变长度 提前分配好空间 代码演示 运行结果 关联容器 集合set 构造 遍历 其他 代码演示 运行结果​编辑 映射map 常用方法 构造 遍历 其他 代码演示1​编…

【AWS】step-functions服务编排

文章目录 step-functionsState machine typeStandard workflowsExpress workflows design skillsError handlingsaga Transaction processing控制分布式系统中的并发性 收费 作为AWS Serverless无服务器的一个重要一环 使用step-functions方法将 AWS 服务链接在一起 step-funct…

网络故障的排错思路

一、网络排错必备知识 1、网络通信的基础设备和其对应的OSI层次 在网络通信中&#xff0c;了解基础设备如交换机、三层交换机、路由器和防火墙以及它们在OSI七层模型中 的作用至关重要。对于网络管理员和工程师来说&#xff0c;深入了解这些设备在OSI模型中的位置和功能可 …

【软考设计师笔记】一篇文章带你了解数据库

【考证须知】IT行业高含金量的证书(传送门)&#x1f496; 【软件设计师笔记】计算机系统基础知识考点(传送门) &#x1f496; 【软件设计师笔记】程序语言设计考点(传送门) &#x1f496; 【软件设计师笔记】操作系统考点(传送门)&#x1f496; 【软件设计师笔记】什么是软…

【大模型】万亿级别的大语言模型训练,基础设施如何支持

万亿级别的大语言模型训练&#xff0c;基础设施如何支持 前言1&#xff09;培训百万亿参数的LLM是可行的&#xff0c;但需要每个GPU高达1 TiB的次级内存池&#xff0c;双向带宽为100 GB/s。2&#xff09;对于1T模型的强扩展在约12288个GPU左右停滞&#xff0c;因为矩阵乘法变得…

JavaScript运行机制

在web前端开发中&#xff0c;JavaScript无疑是一种非常重要的编程语言。它能够为网页添加动态交互功能&#xff0c;提升用户体验。然而&#xff0c;要充分发挥JavaScript的威力&#xff0c;我们需要对它的运行机制有一定的了解。 JavaScript是一种解释执行的脚本语言&#xff…

JVM 性能调优 - 参数调优(3)

查看 JVM 内存的占用情况 编写代码 package com.test;public class PrintMemoryDemo {public static void main(String[] args) {// 堆内存总量long totalMemory Runtime.getRuntime().totalMemory();// jvm 试图使用的最大堆内存long maxMemory Runtime.getRuntime().maxM…

Oracle表结构转成MySQL表结构

在将Oracle数据库表结构转换为MySQL数据库表结构时&#xff0c;需要考虑两大数据库系统之间的差异。以下是一些基本步骤和注意事项&#xff0c;帮助您进行转换&#xff1a;1、字符集和排序规则&#xff1a; Oracle使用的是固定的字符集和排序规则&#xff0c;而MySQL使用的是可…

C语言之字符逆序(牛客网)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 字符逆序__牛客网 题目&#xff1a; 思路&#xff1a;既然有空格就不能用scanf函数来接收字符了。因为scanf函数遇到空格会停止读取。我们可以用get…

Pyhton专项进阶——http协议、cookie、session和认证-3

关于cookie的报文首部相关属性熟悉后&#xff0c;下面就是实际应用。 使用cookie实现用户登录验证&#xff08;初步&#xff09;&#xff1a; 思路&#xff08;一&#xff09;&#xff1a;显示登录页面&#xff0c;输入用户和密码&#xff0c;后端验证&#xff0c;如果验证通…

ffmpeg命令生成器

FFmpeg 快速入门&#xff1a;命令行详解、工具、教程、电子书 – 码中人的博客FFmpeg 是一个强大的命令行工具&#xff0c;可以用来处理音频、视频、字幕等多媒体文件。本文介绍了 FFmpeg 的基本用法、一些常用的命令行参数&#xff0c;以及常用的可视化工具。https://blog.mzh…