【Linux命令200例】awk文本处理工具的系统与实战讲述(常用)

news2024/9/21 14:50:47

在这里插入图片描述

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。
🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。
🏆本文已收录于专栏:Linux命令大全。
🏆本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入讲解。欢迎提前锁定关注。
🎉欢迎 👍点赞✍评论⭐收藏

文章目录

  • 🚀一、Linux awk 命令简介
  • 🚀二、使用方法
  • 🚀三、应用场景
  • 🚀四、实际例子
    • 🔎4.1 提取日志文件中的错误信息:
    • 🔎4.2 统计文件中某个单词出现的次数:
    • 🔎4.3 格式化输出文件的某几列:
    • 🔎4.4 修改文件中某个字段的值:
    • 🔎4.5 将CSV文件转换为JSON格式:
    • 🔎4.6 分析Apache访问日志中的IP地址和请求次数:
    • 🔎4.7 批量重命名文件名中的扩展名:
    • 🔎4.8 提取文件中的URL链接:
    • 🔎4. 9计算文件中某列的总和:
    • 🔎4.10 格式化输出文件的第一行:
    • 🔎4.11 对文件进行排序并去重:
    • 🔎4.12 批量处理文件中的字符串替换:
    • 🔎4.13 验证文件中的日期格式是否正确:
    • 🔎4.14 分析MySQL慢查询日志中的查询时间和执行语句:
    • 🔎4.15 监控系统日志中的关键字并发送警报:
  • 五、🚀总结


🚀一、Linux awk 命令简介

Linux awk(全称为“Aho, Weinberger, and
Kernighan”)是一种文本处理工具,用于从输入文件中提取并输出指定的信息。它以行为单位读取文件,并根据用户定义的模式和操作来处理每一行数据。awk命令是一种强大的编程语言,结合了模式匹配、文本处理和数据分析的功能。

在这里插入图片描述

🚀二、使用方法

awk命令的基本语法如下:

awk options 'pattern { action }' inputfile
  • options:可选参数,用于告诉awk如何处理输入文件。
  • pattern:模式,用于过滤输入文件中的特定行。
  • action:操作,在符合模式的行上执行的动作。
  • inputfile:输入文件的路径。

awk命令的处理逻辑如下:

  1. 从输入文件按行读取数据。
  2. 根据pattern过滤出符合条件的行。
  3. 对符合条件的行执行action操作。

🚀三、应用场景

awk命令在文本处理和数据分析方面非常有用,以下是一些常见的应用场景:

  1. 数据提取和过滤:从日志文件、配置文件等中提取出特定的数据。
  2. 统计和计算:对数据进行统计计算,如求和、平均值等。
  3. 格式化输出:将数据按特定格式输出到屏幕或文件。
  4. 修改文件内容:根据特定规则修改文件中的某些内容。
  5. 数据转换:将数据从一种格式转换为另一种格式。
  6. 数据分析和报告生成:对大量数据进行分析并生成报告。
  7. 批量处理文件:批量处理大量文件,如重命名、删除等操作。
  8. 系统管理和监控:对系统日志进行处理和监控。
  9. 数据清洗和处理:对原始数据进行清洗和处理,以便进一步分析。
  10. 日志分析和监控:对系统日志进行实时分析和监控。
  11. 数据排序和去重:对数据进行排序并去除重复项。
  12. 字符串处理:对字符串进行查找、替换等操作。
  13. 数据格式验证:对数据进行格式验证和校验。
  14. 数据库操作:对数据库中的数据进行处理和操作。
  15. 自动化任务:将awk命令与其他Shell命令结合使用,实现自动化任务。

🚀四、实际例子

下面给出15个实际的例子,展示awk命令在不同场景下的应用:

🔎4.1 提取日志文件中的错误信息:

awk '/ERROR/ { print $0 }' logfile.txt

🔎4.2 统计文件中某个单词出现的次数:

awk '{ count[$1]++ } END { for (word in count) print word, count[word] }' datafile.txt

🔎4.3 格式化输出文件的某几列:

awk '{ printf "%-10s %-10s %-10s\n", $1, $2, $3 }' datafile.txt

🔎4.4 修改文件中某个字段的值:

awk '{ if ($1 == "oldvalue") $1 = "newvalue"; print }' datafile.txt

🔎4.5 将CSV文件转换为JSON格式:

awk -F ',' '{ print "{ \"name\": \""$1"\", \"age\": "$2", \"address\": \""$3"\" }" }' datafile.csv

🔎4.6 分析Apache访问日志中的IP地址和请求次数:

awk '{ count[$1]++ } END { for (ip in count) print ip, count[ip] }' access.log

🔎4.7 批量重命名文件名中的扩展名:

ls *.txt | awk -F '.' '{ print "mv "$0" "$1".csv" }' | bash

🔎4.8 提取文件中的URL链接:

awk '/http[s]?:\/\/[^\s]+/ { print $0 }' datafile.txt

🔎4. 9计算文件中某列的总和:

awk '{ sum += $1 } END { print sum }' datafile.txt

🔎4.10 格式化输出文件的第一行:

awk 'NR==1 { printf "%-10s %-10s %-10s\n", $1, $2, $3 }' datafile.txt

🔎4.11 对文件进行排序并去重:

awk '!seen[$0]++' datafile.txt

🔎4.12 批量处理文件中的字符串替换:

awk '{ gsub("oldstring", "newstring"); print }' datafile.txt

🔎4.13 验证文件中的日期格式是否正确:

awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ { print $0 }' datafile.txt

🔎4.14 分析MySQL慢查询日志中的查询时间和执行语句:

awk '/^# Time:/ { time = $3 } /^# Query_time:/ { print time, $3, substr($0, index($0,$14)) }' slow.log

🔎4.15 监控系统日志中的关键字并发送警报:

tail -f syslog | awk '/error|warning/ { system("echo \"Error detected: "$0"\" | mail -s \"System Alert\" admin@example.com") }'

以上是15个常见的实际例子,展示了awk命令在不同场景下的应用。

五、🚀总结

本文介绍了Linux awk命令的基本概念、使用方法和常见应用场景,并给出了15个实际例子。通过学习和掌握awk命令的用法,可以提高文本处理和数据分析的效率,实现各种自动化任务。希望本文能对读者有所帮助,并能够更好地理解和运用awk命令。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音seo源码开发源代码搭建分享

抖音SEO源码开发涉及到以下几个方面: 前端开发:包括抖音SEO页面的设计与布局,以及需要使用到的前端技术,如HTML、CSS、JavaScript等。 后端开发:包括抖音SEO页面的数据获取和处理,以及需要使用到的后端技术…

[CKA]考试之调度 pod 到指定节点

由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅 题目为: Task 创建一个Pod,名字为nginx-kusc00401,镜像地址是nginx…

Shell脚本学习-for循环结构3

案例1: 使用for循环结构在/oldboy目录下创建10个文件,名称依次为: chang-1 chang-2 chang-3 ... chang-10 脚本: [rootvm1 scripts]# cat for9.sh #!/bin/bash[ -d "/chang" ] || mkdir /changcd /changfor i i…

OA会议管理系统之我的审批(审批签字可生成图片)

一、前言 1.导读 OA会议管理系统之我的会议(会议排座&可拖拽座位&附源码)http://t.csdn.cn/iVLAD 书接上文,在上一篇中我们完成了我的会议功能,其中有功能会议送审,送审人就可以在我的审批功能中查看…

信息安全风险评估总结【GB/T 20984-2007】

文章目录 风险评估实施流程一.风险评估准备1.1确定风险评估目标1.2确定风险评估范围1.3组建评估团队1.4风险评估工作启动会议1.5系统调研1.6确定评估依据1.7确定评估工具1.8制定评估方案1.9获得支持 二.风险要素识别2.1实施整个流程图2.2资产识别2.2.1资产调查2.2.2资产分类2.2…

vCenter 7.0 的热迁移配置操作指南

vCenter 7.0 的热迁移配置操作指南 现在我们已经部署好了vCenter 7.0(VMware vCenter Server 7.0快速部署操作指南)和几台ESXi 7.0的虚拟主机(VMWare ESXi 7.0快速部署操作指南),我们可以继续测试之前操作失败的热迁移…

【练】要求打印,倒置线程,顺序执行。运行顺序为:线程1 线程2 线程1 线程2

要求定义一个全局变量 char buf[] "1234567",创建两个线程,不考虑退出条件,另: A线程循环打印buf字符串,B线程循环倒置buf字符串,即buf中本来存储1234567,倒置后buf中存储7654321. 不…

RabbitMQ 教程 | 第9章 RabbitMQ 高阶

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

【MySQL】数据去重,仅保留一条(效率最高)

系列文章 C#底层库–MySQLBuilder脚本构建类(select、insert、update、in、带条件的SQL自动生成) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129179216 C#底层库–MySQL数据库操作辅助类(推荐阅读&#xff0…

一键生成logo的小妙招,这个方法值得收藏

在现代,每个品牌都需要一个标志性的logo,这个logo能够代表品牌,并且让消费者能够轻松识别出这个品牌。然而,对于许多人来说,制作一个漂亮的logo是一项艰巨的任务,需要花费大量的时间和精力。但是&#xff0…

2023 电赛E题--可能会出现的问题以及解决方法

2023年电赛E题报告模板(K210版)--可直接使用 本文链接:2023年电赛E题报告模板(K210版)--可直接使用_皓悦编程记的博客-CSDN博客 解决激光笔在黑色区域无法识别 本文链接: 2023 电赛 E 题 激光笔识别有误-…

W5500-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W5500-EVB-PICO通过dhcp获取ip地址(网关,子网掩码,dns服务器)等信息,给我们的开发板配置网络信息,成功的接入网络中,那么本章将教大家如何让我们的开发板进行DNS域名解析…

Python(六十三)获取字典视图

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

设计模式行为型——中介者模式

目录 什么是中介者模式 中介者模式的实现 中介者模式角色 中介者模式类图 中介者模式代码实现 中介者模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是中介者模式 中介者模式(Mediator Pattern)属于行为型模式,是用来降低…

Filebeat+ELK 部署

Node1节点(2C/4G):node1/192.168.8.10 Elasticsearch Kibana Node2节点(2C/4G):node2/192.168.8.11 Elasticsearch Apache节点:apache/192.168.8.13 …

Java反射学习(大综合)

第一天 Java反射及动态代理... 2 一、 Java反射... 2 1、什么是反射:... 2 2、反射的原理... 2 3、反射的优缺点:... 2 4、反射的用途:... 3 5、反射机制常用的类:... 3 1、获得Class:主要有三…

计算机基础:数据库-Sqlserver

数据库-Sqlserver 前言参考链接:关键词数据库代码案例视图触发器索引窗口函数游标小记 前言 妥妥的复习,我相信chatjpt,也相信笔记。 说实话,真正碰到问题还是先想到搜索引擎或chatjpt(即使印象中自己的笔记记过相关内容&#xf…

NVIDIA 535.86.05 Linux 图形驱动程序改进 Wayland 支持

导读NVIDIA公司近日发布了适用于 Linux、FreeBSD 和 Solaris 系统的 NVIDIA 535.86.05 图形驱动程序,作为其生产分支的维护更新,解决了各种错误和问题。 NVIDIA 535.86.05 是在 NVIDIA 535.54.03 发布一个多月之后发布的,它通过解决在使用某…

量子机器学习解决方案新鲜出炉!Rigetti和ADIALab签署合作

​ (图片来源:网络) 近日,美国全栈量子经典计算的先驱Rigetti Computing宣布与阿拉伯联合酋长国的ADIA Lab签署了合作协议,双方将共同设计、构建、运行和优化量子计算解决方案,旨在解决概率分布分类问题&am…

【腾讯云Cloud Studio实战训练营】如何成为一名合格的Python爬虫“念咒师”(基于ChatGpt)

【前言】 不管是新手程序猿,还是秃头程序猿,在工作学习中,都无法避免一项看似简单却又异常重要的环节——搭建开发环境,这常常让我们程序猿们头痛不已!毫不夸张的说,它可能是整个开发过程中最具挑战性和耗时…