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

在这里插入图片描述

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,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.mzph.cn/news/21260.shtml

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

相关文章

美团基础架构面经总结汇总

美团基础架构的面经。 问的全是基础,一个编程语言的问都没有。 问题记录 MySQL-MVCC InooDB是通过 MVCC 实现可重复读的隔离级别的,MVCC 就是多版本并发控制,它其实记录了历史版本的数据,解决了读写并发冲突问题。有一个版本编码,然后它进入了各种操作下的数据状态,能…

redis数据未到过期时间被删除

1. 问题描述 使用了jeecgboot开发后端代码,代码设置的redis过期时间为24小时,部署使用的宝塔面板,在redis中看到的过期时间也是为24小时,但是并未到过期时间,数据就被删除。 2. 解决办法 观察了一下redis中的数据&a…

DataGrip实时模板的配置

DataGrip实时模板的配置 File→Setting→Editor→Live Templates→点击“”→Live Template 即可新写入一条模板语句 写入新模板 缩写:seld select $END$ from dual; 注意:一开始都是默认无应用的,需要手动配置应用于所有SQL 点击difine(…

【计算机网络】NAT技术

文章目录 1. NAT技术简介2. 使用NAT技术转换IP的过程3. NAPT4. NAT技术的缺陷5. NAT和代理服务器 1. NAT技术简介 NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效避免外…

Linux下安装配置Redis

文章目录 安装依赖库上传安装包并解压 启动默认启动指定配置启动开机自启 安装 依赖库 Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖: yum install -y gcc tcl上传安装包并解压 将Redis安装包上传到服务器的任意目录,例…

JavaScript |(三)内建对象 | 数组 | string对象 | 尚硅谷JavaScript基础实战

学习来源:尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 📚数组🐇数组介绍⭐️数组(Array)⭐️基本操作⭐️数组的字面量 🐇数组中的常用方法⭐️push()⭐️pop()⭐️unshift()⭐️shif…

无人驾驶实战-第一课(自动驾驶概述)

在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 无人驾驶汽车的定义…

音频光耦合器

音频光耦合器是一种能够将电信号转换为光信号并进行传输的设备。它通常由发光二极管(LED)和光敏电阻(光电二极管或光敏电阻器)组成。 在音频光耦合器中,音频信号经过放大和调节后,被转换为电流信号&#xf…

Windows11+Opencv+Clion编译源码

Windows11OpencvClion编译源码 参考:https://www.robotsfan.com/posts/69395e08.html 注意事项 编译过程中使用的软件,开源码等所有工具的安装路径一定不要有中文和空格。cmake过程会下载一些文件,如果是局域网的话可能下载不下来&#xf…

Restful开发规范以及开发流程

目录 一、RestFul开发规范 二、开发流程 一、RestFul开发规范 RESTful(Representational State Transfer)是一种用于设计和开发网络应用程序的架构风格,它强调使用标准HTTP方法和状态码来进行资源的管理和交互。以下是一些常见的RESTful开发…

SystemVerilog scheduler

文章目录 简介调度器simulation regionPreponed regionActive regionInactive regionNBA(Non-blocking Assignment Events region)Observed regionReactive regionRe-Inactive Events regionRe-NBA RegionPostponed Region PLI region:Pre-active regionPre-NBA regionPost-NBA…

ELK日志分析系统

文章目录 一. ELK日志分析系统概述1.ELK 简介2.ELK日志分析系统2.1 ElasticSearch2.1.1 ElasticSearch概述2.1.2 ElasticSearch核心概念(作用) 2.2 Kiabana2.2.1 Kiabana 概念2.2.2 Kiabana 主要功能 2.3 Logstash2.3.1 Logstash 概念2.3.2 Logstash主要…

unreal engine 开启像素流笔记

本教程忽略了一些细节,但是不重要,需要详细教程参考https://docs.unrealengine.com/5.2/zh-CN/getting-started-with-pixel-streaming-in-unreal-engine/ 1.启用像素流插件Pixel Streaming 2.编辑器偏好设置 关卡编辑器-播放添加额外启动参数 image.png …

【linux--->网络层协议】

文章目录 [TOC](文章目录) 一、概念1.网络层概念2.IP地址概念 二、IP协议报文结构1.首部长度2.总长度(total length)3.协议4.版本号(version)5.服务类型(Type Of Service)6.生存时间间(Time To Live, TTL) 三、网段划分1.5类IP划分法.2.CIDR(Classless Interdomain Routing)划分…

Jenkins工具系列 —— 插件 钉钉发送消息

文章目录 安装插件 Ding TalkJenkins 配置钉钉机器人钉钉APP配置项目中启动钉钉通知功能 安装插件 Ding Talk 点击 左侧的 Manage Jenkins —> Plugins ——> 左侧的 Available plugins Jenkins 配置钉钉机器人 点击 左侧的 Manage Jenkins ,拉到最后 钉…

使用Vue+CSS实现汉堡图标过渡为叉号图标,有点意思

前言 本文给大家分享三个具有过渡效果的汉堡图标,当点击汉堡图标时,过渡为叉号图标。这种具有过渡特效的图标挺炫酷的,感觉一下子给网页增加一点新颖特色。早在2015年左右,国外挺多优秀门户网站都有使用类似的图标,那…

在.net 6.0中 调用远程服务器web服务,Webservices(xxx.asmx) ,RESTful 风格,2种解决方案。

1.使用 Connected Services: 右键单击您的项目,选择 "Add"(添加)-> "Connected Services"(已连接的服务)。 在 "Connected Services" 对话框中,选择 "W…

问道管理:盘后股价跳水!苹果最新财报出炉

北京时间8月4日,苹果公司发布2023财年第三财季(2023年二季度)财报。二季度,苹果实现营收817.97亿美元,同比下降1.40%;净利润为198.81亿美元,同比增加2.26%。 其中,二季度&#xff0c…

Pytest学习教程_装饰器(二)

前言 pytest装饰器是在使用 pytest 测试框架时用于扩展测试功能的特殊注解或修饰符。使用装饰器可以为测试函数提供额外的功能或行为。   以下是 pytest 装饰器的一些常见用法和用途: 装饰器作用pytest.fixture用于定义测试用例的前置条件和后置操作。可以创建可重…

理解树的结构

树的重要性 二分查找算法、几种核心的排序算法以及图算法都与树有非常密切的关系。有句话锁,“没学会树,算法相当于白学”,可见,树在算法中的地位。 树的考察方面 层次遍历以及拓展问题 前后序遍历与拓展问题 中序遍历与搜索树问…