Linux 文本处理神器 awk 超详细教程|从入门到实战,一篇吃透
Linux 学习资料 https://pan.baidu.com/s/1A6qqBk2ViE_Le2cQjSowkQ?pwd7uz8一、awk 命令简介awk是 Linux/Unix 下功能极其强大的文本处理与数据格式化编程语言广泛用于文本扫描、字段提取、条件过滤、统计计算等场景。其名称取自三位创始人Alfred Aho、Peter Weinberger、Brian Kernighan姓氏首字母。核心特点逐行读取文本按模式匹配 动作执行工作内置字符串处理、算术运算、数组、循环、判断等完整语法无需编译一行命令即可完成复杂文本处理常用于日志分析、数据清洗、字段截取、报表生成awk既是命令行工具也是一门微型脚本语言是运维与开发必备神器。二、语法格式awk 支持两种常用写法命令行直接脚本、外部脚本文件执行。1. 命令行直接执行bash运行awk [选项] 脚本代码 输入文件1 [输入文件2 ...]2. 从脚本文件读取bash运行awk [选项] -f 脚本文件 输入文件1 [输入文件2 ...]结构说明脚本代码格式为模式 { 动作 }用单引号包裹模式匹配条件正则 / 数值比较等动作匹配后执行的逻辑打印、计算、赋值等不指定文件时默认从标准输入读取三、常用选项及说明表格选项说明-F fs指定字段分隔符支持字符 / 正则默认空白符-v varvalue定义变量用于 Shell 向 awk 传参-f scriptfile从文件读取 awk 脚本-m[fr] val扩展限制参数gawk 特有标准 awk 不一定支持四、示例用法示例文件data.txt内容冒号分隔plaintextAlice:Engineering:55000 Bob:Marketing:48000 Carol:Engineering:620004.1 基础字段处理打印第一列姓名bash运行awk -F: {print $1} data.txt输出plaintextAlice Bob Carol打印最后一列薪资bash运行awk -F: {print $3} data.txt重排字段并自定义输出bash运行awk -F: {print $3,$1,in,$2} data.txt输出plaintext55000 Alice in Engineering 48000 Bob in Marketing 62000 Carol in Engineering4.2 模式匹配与条件处理打印包含 Engineering 的行bash运行awk -F: /Engineering/ {print $0} data.txt # 简写 awk -F: /Engineering/ data.txt打印薪资 50000 的员工姓名bash运行awk -F: $350000 {print $1} data.txt输出plaintextAlice Carol多条件组合Engineering 且薪资 60000bash运行awk -F: $2Engineering $360000 {print $1,,$3} data.txt输出plaintextCarol 620004.3 BEGIN END 块统计必备BEGIN处理文本之前执行表头、初始化END处理文本之后执行汇总、平均值bash运行awk -F: BEGIN { print 员工薪资报告 print 姓名\t部门\t薪资 total 0 } { print $1,\t,$2,\t,$3 total $3 } END { print print 总薪资支出, total print 平均薪资, total/NR } data.txt输出plaintext 员工薪资报告 姓名 部门 薪资 Alice Engineering 55000 Bob Marketing 48000 Carol Engineering 62000 总薪资支出 165000 平均薪资 550004.4 内置变量使用NR当前行号NF当前行字段数FILENAME当前文件名显示行号bash运行awk {print NR : $0} data.txt检查字段数量是否异常bash运行awk -F: NF ! 3 {print Line NR 字段异常NF} data.txt4.5 Shell 向 awk 传递变量bash运行min_salary50000 awk -v minsal$min_salary -F: $3 minsal {print $1} data.txt4.6 管道结合系统命令bash运行# 查看 80 端口监听进程 netstat -tuln | awk /:80/ {print $0}五、注意事项引号规则awk 脚本必须用单引号包裹避免 Shell 解析$等特殊字符。字段与记录一行 一条记录默认空格 / Tab 分隔字段$0表示整行$1/$2...表示第 N 个字段模式与动作可省略只有动作处理所有行只有模式默认打印匹配行版本差异常用版本为gawk(GNU awk)功能最全部分 Unix 自带 nawk/awk语法略有差异。适用场景简单替换优先sed超复杂处理可用 Python/Perl结构化文本、字段统计awk 最简洁高效六、总结awk是 Linux 文本处理效率天花板掌握基础语法即可替代大量复杂脚本。 日常工作中字段切割 条件过滤 统计汇总awk 几乎通吃。

相关新闻

Android密码安全存储:SharedPreferences与AES加密实践

Android密码安全存储:SharedPreferences与AES加密实践

1. SharedPreferences基础与密码存储场景分析在Android应用开发中,用户登录状态的持久化是一个基础但至关重要的功能。SharedPreferences作为Android平台提供的轻量级存储方案,特别适合保存用户偏好设置和小规模数据,比如记住密码功能。与SQL…

2026/7/19 2:44:45 阅读更多 →
结对编程实践指南:提升代码质量与团队协作效率

结对编程实践指南:提升代码质量与团队协作效率

1. 结对编程的本质与价值第一次接触结对编程这个概念时,我正坐在一个开放式办公室里,看着两位资深开发人员共用一台电脑。一个人专注地敲着键盘,另一个人则时不时提出建议或指出潜在问题。这种看似"浪费人力"的工作方式&#xff0c…

2026/7/19 2:44:45 阅读更多 →
WSL2环境下高效Android开发环境搭建指南

WSL2环境下高效Android开发环境搭建指南

1. 为什么选择WSL2进行Android开发?在Windows 11环境下进行Android系统开发,传统方式通常面临两个选择:要么忍受性能低下的虚拟机方案,要么折腾双系统切换。而WSL2(Windows Subsystem for Linux 2)的出现完…

2026/7/19 2:44:45 阅读更多 →

最新新闻

C++ Builder串口通信实战:工业级上位机开发与协议解析

C++ Builder串口通信实战:工业级上位机开发与协议解析

1. 项目概述:为什么今天还要搞串行通信?在万物互联、高速网络满天飞的时代,一提到“串行通信”,很多刚入行的朋友可能会觉得这玩意儿是不是有点“复古”了?USB、以太网、Wi-Fi、蓝牙,哪个不比它快、不比它方…

2026/7/19 4:42:56 阅读更多 →
C++异步IO库深度对比:Boost.Asio、libuv、C++ REST SDK与WebSocket++实战解析

C++异步IO库深度对比:Boost.Asio、libuv、C++ REST SDK与WebSocket++实战解析

1. 项目概述:为什么我们需要深入理解异步IO库?如果你写过网络程序,尤其是用C/C这类“贴近系统”的语言,大概率踩过同步阻塞IO的坑。想象一下,你的服务器程序正在为一个客户端下载大文件,整个线程就卡在read…

2026/7/19 4:42:56 阅读更多 →
【Bug已解决】Windows Codex Desktop should support SSH remote projects to Windows OpenSSH hosts 解决方案

【Bug已解决】Windows Codex Desktop should support SSH remote projects to Windows OpenSSH hosts 解决方案

【Bug已解决】Windows Codex Desktop should support SSH remote projects to Windows OpenSSH hosts 解决方案原始报错线索:Windows Codex Desktop should support SSH remote projects to Windows OpenSSH hosts(桌面应用应支持通过 SSH 连到 Windows …

2026/7/19 4:42:56 阅读更多 →
C# WinForm窗体抖动与鼠标点击失效的根源剖析与实战解决方案

C# WinForm窗体抖动与鼠标点击失效的根源剖析与实战解决方案

1. 项目概述:当你的WinForm应用开始“跳舞”和“装死” 如果你是一名C# WinForm开发者,那么“窗体抖动”和“鼠标点击失效”这两个问题,大概率是你职业生涯中迟早会遇到的“经典”难题。它们不像空指针异常那样直接报错,也不像性能…

2026/7/19 4:42:56 阅读更多 →
1+1>3的联合破局:看黎阳之光如何携手行业伙伴,打造化工智能安全新标杆

1+1>3的联合破局:看黎阳之光如何携手行业伙伴,打造化工智能安全新标杆

导语化工行业安全数字化转型早已告别“单打独斗”时代。单独的感知硬件、单一监控平台、零散的安全咨询服务,都无法完整覆盖炼化厂区、油气管道、危化仓储全生命周期风险管控需求。设备厂商懂传感、设计院懂工艺、总包单位懂落地、安全服务商懂合规,但各…

2026/7/19 4:42:56 阅读更多 →
爆款预测:如何用API数据洞察下一个热卖品?

爆款预测:如何用API数据洞察下一个热卖品?

引言:数据驱动的爆款时代在电商、内容平台、应用商店等竞争激烈的市场,提前识别“爆款”已成为产品、运营和营销团队的核心能力。传统的市场调研和直觉判断越来越难以应对快速变化的用户偏好。而公开或付费的API数据,正成为洞察下一个热卖品的…

2026/7/19 4:41:55 阅读更多 →

日新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

月新闻