运维人员必须掌握--awk的简单用法

玩转linux三剑客-这应该是我看到过最全的awk学习总结了 文章目录前言一些心得历史溯源awk 基本格式awk 执行顺序awk 如何分割语句awk 常用选项参数关键字awk 最基础操作awk 变量awk 运算符awk 条件语句awk 循环语句awk 输入输出语句awk 常用函数awk 注意小细节 awk 前言 我为什么要把 awk 单独拿出来做一篇博文呢?因为 awk 功能确实太强大了,grep 和 sed 相对而言要好掌握不少,awk 其本身就算是一门编程语言,awk 脚本的写法可以说是非常灵活的,理论上可以替代 grep,所以我觉得很有必要将 awk 专门拎出来 阅读详情

awk是由条件和动作组成,先判断条件,再执行动作

先读取文本中的第一行内容,对其进行条件的分隔和判断  执行动作

格式:
awk ‘条件1{动作1}条件2{动作2}。。’  文件名
条件:一般使用关系表达式作为条件(BEGIN/END。。)或者大小判断
动作:格式化输出,流程控制语句(复杂的awk语句)

[root@jason ~]# df -h
Filesystem                    Size  Used   Avail   Use%  Mounted on
/dev/mapper/vg_jason-lv_root              18G   2.1G  15G    13%  /
tmpfs                              939M  0    939M   0%   /dev/shm
/dev/sda1                     485M  
39M   421M   9%   /boot
/dev/sr0                            3.6G  3.6G  0     100%  /media

[root@jason ~]# df -h|grep /dev/sda1|awk '{print $5}'
9%
[root@jason ~]# df -h|grep /dev/sda1|awk '{print $5}'|cut -d "%" -f 1
9       

[root@jason ~]# awk '{FS=":"}{print $1 "\t" $3}' /etc/passwd
root:x:0:0:root:/root:/bin/bash       为什么会输出这个呢?  因为awk是先读取文本的第一行内容
bin     1 
daemon     2
adm     3
lp     4
sync     5

[root@jason ~]# awk 'BEGIN{FS=":"}{print $1 "\t" $3}' /etc/passwd   
root     0           
bin     1
daemon     2              以:为分隔符,开始就指定从BEGIN来提取文本内容
adm     3
lp     4
sync     5

[root@jason ~]# awk 'BEGIN{FS=":"}$3<=3{print $1 "\t"}' /etc/passwd
root     
bin                加入一个条件 第三列的数值<=3
daemon     

 
[root@jason ~]# awk 'BEGIN{printf "this is/etc/passwd"}BEGIN{FS=":"}$3<=5{print $1 "\t"}' /etc/passwd
this is /etc/passwd         在开始加入一行文字叙述
root     
bin     
daemon     
adm     
lp     
sync

[root@jason ~]# awk 'END{printf "this is /etc/passwd"}BEGIN{FS=":"}$3<=5{print $1 "\t"}' /etc/passwd
root     
bin     
daemon     
adm     
lp     
sync     
this is /etc/passwd    
结尾加入文字叙述

awk操作符

= += -= *= /= %= ^=            赋值操作符
?                        条件表达操作符
|| && !                    并、与、非
~ !~                        匹配操作符(匹配与不匹配)
< <= == != > >=                关系操作符
+ - * / % ^                算术操作符


FS用来设置域分隔符,如: 以冒号为分隔符FS=":"
NF为记录域个数(列数),在记录被读之后设置,常用$NF指定最后一列


$0表示使用所有域

[root@jason ~]# awk '{print $0}' passwd > pass
     
     将passwd的所有域 输出重定向到pass文件中   即:拷贝passwd到pass

[root@jason ~]# awk '{print $0}' passwd |tee pass

      将passwd的所有域 通过管道将结果通过tee传到pass中,并在屏幕上显示结果

$n 指定区域 (列)    

        [root@jason ~]# awk 'BEGIN{FS=":"}{print $1,"\t",$5}' passwd

     使用begin模式,FS指定以“:”为分隔符,截取第1、5列 显示到屏幕

    FS            设置域分隔符,相当于-F



在awk命令中传值  穿插if语句

    查询可用空间小于36000M的分区:

[root@jason ~]# df -m|awk '($4 ~ /^[0-9]/) {if ($4 < LIMIT) print $6"\t"
$4}' LIMIT=36000
/     14708
/dev/shm     939
/boot     421
/media     0

        

    查询当前用户登陆在哪个端口:

[root@jason ~]# who|awk '{if ($1 == user) print $1" you are connected to
"$2}' user=$LOGNAME
root you are connected to pts/0

使用~紧跟正则表达式可以匹配域,也可以用if,条件需要用()括起来


[root@jason ~]# awk '$0 ~ /ftp/' passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
 
     匹配passwd文件所有域中 含有ftp的行

[root@jason ~]# awk '$0 !~ /ologi/' passwd
root:x:0:0:root:/root:/bin/bash
      
     不匹配passwd含有ologi字符的行  


精确匹配   使用==并用双引号括起条件可以精确匹配条件


[root@jason ~]# awk 'BEGIN{FS=":"}{if ($1 == "root") print $0}' passwd
root:x:0:0:root:/root:/bin/bash

以”:“为分隔符  精确匹配第一列是root的所有列

其他匹配

大小写匹配           '/[Gg]reen/'   
匹配某个字符        ~ '/^...a/'   匹配第四个字符是a
匹配以X开头         ~ ' /^J/'     匹配以J开头
匹配x或xx            ~ '/blue/green/' 匹配蓝色或黄色

Linux 命令 | 每日一学,文本处理三剑客之awk命令实践 描述:前面作者已经介绍了文本处理三剑客中的 grep 与 sed 文本处理工具,今天将介绍其最后一个且非常强大的 awk 文本处理输出工具,它可以非常方便我们读取文件内容或者将命令执行内容,根据脚本进行自定义格式化美化输出。Linux中的awk工具以其强大的文本处理能力而闻名,它是一种专门用于模式扫描和处理的编程语言。本章节将深入探讨awk的语法结构,并提供一份简明易懂的学习指南。 阅读详情

相关推荐

Linux运维实战:AWK用法详解

需要提醒的一点是,在实际使用过程中,建议根据具体需求查阅AWK相关文档,并灵活运用各种命令和函数,以达到更高效的数据处理效果。在这个例子中,“NR==FNR”表示正在处理第一个文件,“a[$0]=1”创建了一个名为“a”的数组,并将文件中的行作为关键字存储在该数组中。在这个例子中,我们首先遍历文件的每一行,然后对每一行中出现的单词进行计数,存储在数组count中。AWK是一种可以进行文本处理和分析的强大工具,尤其在Linux运维中,AWK的高级应用可以节省很多时间和精力。最后,使用print语句输出结果。

leibaiqing的专栏 2358

AWK实战:5个运维工程师必备的日志分析技巧

性能优化:对于GB级日志,合理使用getline和数组能提升处理速度可维护性:添加清晰的注释和参数校验扩展性:设计成可复用的函数模块安全性:处理日志时注意敏感信息过滤这些脚本在InsCode(快马)平台上可以快速验证和调整,它的在线编辑器支持实时预览AWK脚本效果,还能一键部署为常驻监控服务。实际使用中发现,平台内置的DeepSeek模型能自动优化脚本性能,处理百万行日志只需几秒,特别适合紧急排查场景。对于运维同学来说,掌握这些AWK技巧能极大提升工作效率。

AmberLeopard26的博客 566

Codex VS Claude Code 全面测评!代码开发到底选谁?

评测结果6项指标(设计质量、提示遵从度、响应式、代码质量、细节关注、惊喜度)虽未公布最终赢家,但实测本身已揭示两工具在前端任务上的直接差异。Codex基于OpenAI的云沙箱架构,API通过全球CDN分发,但在国内直连时,依赖特定网络环境。:纯终端工具,直接在你的iTerm或终端中运行,不新建窗口、不切换上下文,与本地开发环境无缝融合。GPT-5.3 Codex(xhigh)输入$1.75/百万token,输出$14.00/百万token,混合均价约**$4.81/百万token**。

Jedudu的博客 3082

【网络运维】Linux 文本处理最高的山:awk命令

awk 是一款强大的文本分析工具,更像一门完整的编程语言。它支持变量定义、条件语句、循环结构、数组操作、正则表达式和函数等功能。awk 按行读取数据,根据指定条件进行查找和操作。 awk 有三种主要实现:awk、gawk 和 nawk,日常所说的 awk 通常指的是 gawk。其名称取自三位创始人 Alfred Aho、Peter Weinberger 和 Brian Kernighan 的姓氏首字母。 本文将一一介绍 awk 命令的基础用法和高级技巧,希望能够帮助读者全面掌握这个强大的工具。

G_H_S_3_的博客 1013

STM32-DAC定时器触发三角波生成【频率与幅度精准控制】

本文详细介绍了STM32 DAC定时器触发三角波生成的原理与实现方法,涵盖硬件配置、频率与幅度精准控制技巧及代码实现。通过定时器触发DAC模块,可灵活调节三角波的频率和幅度,适用于信号发生器等高精度应用场景。

weixin_29161785的博客 453

HRnet的pytorch实现

HRnet的pytorch实现

奋土的博客 1953

Linux 运维命令汇总:含shell、sed、awk等

欢迎关注我的公众号「DevOps和k8s全栈技术」,进公众号【服务】栏,可以看到技术群,点击即可加入学习交流群。↓↓↓ 原文链接:https://www.cnblogs.com/linuxprobe/p/17115140.html概述本篇主要汇集个人工作以来收集和整理的一些 Linux 运维工具, 用于排查、定位和处理各种问题,包...

weixin_38320674的博客 190

【PMP认证考试之个人总结】第 4 章 项目范围管理

第 4 章 项目范围管理 4.1 综述   1.产品范围和项目范围的区别 ①产品范围:某项产品、服务或成果所具有的特性和功能; ②项目范围:为交付具有规定特性与功能的产品、服务或成果而必须完成的工作; 2.收集需求、定义范围和创建WBS输出的区别 ①收集需求 ===> 需求跟踪矩阵; ②定义范围 ===> 项目范围说明书;

qq296398300的博客 2892

linux之awk详解

awk不仅仅是Linux系统中的一个命令,而且其还是一种编程语言,可以用来处理数据和生成报告(Excel)。处理的数据可以是一个或多个文件,它是Linux系统最强大的文本处理工具,没有之一。

荷逸的博客 5385

中国主要湖泊水库面状矢量边界图层ArcGIS应用实战:从数据获取到专题图制作

本文详细介绍了中国主要湖泊水库面状矢量边界图层在ArcGIS中的实战应用,从数据获取到专题图制作的全流程。涵盖官方数据源、科研机构共享数据及商业平台的选择,以及ArcGIS中的数据处理、拓扑错误修正和专题图设计技巧,帮助用户高效完成湖泊水库的空间分析与可视化。

weixin_33672400的博客 255

2025华为杯第二十二届中国研究生数学建模竞赛D题:低空湍流监测及最优航路规划 - 完整解题分析+完整MATLAB源码!(下篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1622

linux命令-awk(运维基本功)

运维这一行,绕不开对各种各样的数据做统计分析(日志,性能数据等),所以awk这个数据处理命令可以说是运维的基本功。 在问题来临的时候,如何快速分析现有日志定位问题点?awk是一个很好的辅助工具,所以花费一定的时间去学习它,并在日常工作中有意的多去使用以达到熟练操作,都是很有必要的。 命令介绍 运行模式: awk [参数可选] '条件类型1{动作1} 条件类型2{动作2} ......' filename 常用参数: 【-F】指定分割符,默认空格(如 -F"," 以逗号...

龙叔运维的博客 2732

使用 PLS 回归进行近红外光谱的异常值检测

在光谱数据中,并非每个数据点都是有效的,因此,在构建模型时找到与大部分数据不符合的数据点是一种必要的操作。这些数据我们称之为。在这篇文章中,我们将使用PLS回归进行红外光谱数据的异常值检测。

qq_44204759的博客 1423

Linux 云计算运维三剑客grep、sed、awk简单对比

1、简单对比三剑客的优势 2、从对比中可以突出三剑客各自在那个领域更占优势

2501_90170320的博客 702

【项目实战】主流车载操作系统,QNX实时操作系统入门介绍

QNX是一种实时操作系统,自1980年代初期由Quantum Software Systems成立以来,已被广泛应用于各种行业和领域。QNX具有实时响应、高可靠性和分布式等特点,为各种设备提供了强大的底层操作系统平台。随着科技的不断发展和进步,QNX系统的应用范围和潜力也在不断扩大。本文将全面介绍QNX系统,包括其引言、背景、系统特性、应用领域和生态系统等方面。QNX作为一种实时操作系统,具有高效的实时性能、高可靠性、分布式、可剪裁性和可扩展性等特点。它在各个领域都有广泛的应用,并拥有一个庞大的生态系统。

奶爸的编程之路,也就一周冷个三天 3071

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

shell 实现文件改名

修改文件名可以有不同的命令方式,mv 可以实现,但是使用rename 这种专业的改名字很好 对于单个的文件,可以直接使用以上的命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢? 创建测试文件: touch hell_world_hi_{1..5}_OO.jpg 这一百个文件需要在前面添加前缀变成类似hell_world_hi_{1..5}_nihao.j...

Z14523299999的博客 3638

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

探索Shell:Linux系统的应用和编程利器

Shell不仅能用于操作linux系统,还能用于编写Shell程序,和C语言的.c文件一样,Shell脚本的程序命名为.sh文件,但扩展名不影响脚本的执行,运行前提是要给文件赋予执行权限,这里就不多赘述。Shell和其他编程语言一样,有变量、数组、控制流程等概念,但在对操作系统这方面有极大的优势,是用户和linux系统沟通的桥梁,使用 Shell 的熟练程度也反映了用户对 Linux 的掌握程度,值得每个ITer学习。linux中的Shell,是一个可以由用户录入的界面,这个界面也可以反馈运行信息。

Yee_mo的博客 479

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

AWK命令常见用法

1、查看有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc -l 1 2、查看某一个页面被访问的次数: grep "...

rongkai111的博客 2640

linux常用命令awk,sort

linux常用命令awk 1.将文本中第2列数据求和 awk ‘{sum+=$2} END {print $sum}’ a.txt 样例:a.txt a.txt 执行 awk命令 在这里插入图片描述

chenxi910911的博客 2407

Linux系统运维人员常用速查表

Linux系统运维人员常用速查表 walkingcloud2020-08-09 19:55:41 Linux系统运维人员常用速查表 1、awk速查表 2、bash速查表 3、firewall-cmd速查表 4、Linux常用命令速查表 5、Linux权限速查表 6、Linux网络速查表 7、SSH命令速查表 8、vim命令速查表 9、Git命令速查表 10、kubectl命令速查表 阅读时请点击图片查看高清大图 1、awk速查表 2、bash速查表 ...

荒野求生的博客 420

shell-awk命令详解(理论+实战)

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作,数据可以来自标准输入也可以是管道或文件。20世纪70年代诞生于贝尔实验室,现在centos7用的是gawk之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。awk。

zjl999666999的博客 1183

Linux三剑客(grep、sed、awk)

Linux三剑客

爱学习的六金同学的博客 4286

日志分析的方法之grep、sed、awk常规用法

统计nginx日志中request_times的值即统计响应时间并排列,这样我们就能找到响应时间最长的然后定位到行便于排查。#这里有一个需要注意的地方,如果开始时间没有日志,那么查询结果会为空,所以还可以使用模糊查询的方法。#按时间段查询日志,查询2024-02-22 03:38到04:00之间的日志。#递归查询,需要在目录及子目录中递归查询文件,结果展示匹配行文件名+匹配行。#按照关键字查询相关日志并打印前面的10行内容。#按照关键字查询相关日志并打印后面的10行内容。#统计文件中查询到的关键字个数。

weixin_37985149的博客 1026

awk比较两个文件

AWK按行或按某列比较两个文件相同和不同

Knight_M_Moon的博客 4353

awk最经典的用法

#!/bin/bash #check access counts. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH access_count(){ #awk计算列的和 counts=tail /var/log/nginx/access.log |awk '{print $1}'|awk -F '.' '{print $4}' |awk '{a=a+$1} END {print a}'

IT技术 328

linux中grep,awk,sed的日常用法

【Linux三剑客速查指南】提供grep/sed/awk三大文本处理工具的常用命令速查表,按「查找→修改→计算」流程编排: grep查找:支持关键词筛选(-i忽略大小写/-v排除)、递归搜索(-R)、上下文显示(-A/-B)及计数(-c) sed修改:包含全局替换(s///g)、行删除(/pattern/d)、行插入(a/i)、多操作(-e)和区间截取(-n p) awk计算:支持列提取($1/$NF)、条件过滤、去重统计、数值运算(求和/平均/最大)及多分隔符(-F) 组合应用:展示日志分析、数据提取、统

weizhiai12的专栏 282
上一篇: shell脚本---mysql检测监控脚本系列
下一篇: 判断字符串是否为数字的多种方法
linux_Cz
博客等级 码龄12年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值