linux awk使用

1.概述

awk 是 Linux 系统中一个非常强大的文本处理工具,常被称为"三剑客"之一(另外两个是 grep 和 sed)。它主要用于从文本文件中提取、过滤和处理数据,尤其适合处理结构化数据,例如日志文件、CSV 文件等。

2.基本语法

复制代码
awk [选项] '模式或条件 { 编辑指令 }' 文件

其中:

  • ‌选项 ‌:如 -F 指定字段分隔符,-v 定义变量等。
  • ‌模式或条件‌:用于匹配输入行的规则,例如正则表达式。
  • ‌编辑指令 ‌:在匹配到行后要执行的操作,通常用大括号 {} 包裹。
  • ‌文件‌:要处理的输入文件。

3. 常见用法示例

  1. 打印文件中的所有内容

    awk '{print}' file.txt

或

复制代码
awk '{print $0}' file.txt

2.指定字段分隔符

默认情况下,awk 使用空格或制表符作为字段分隔符。如果文件使用逗号分隔,可以使用 -F 选项指定分隔符:

复制代码
awk -F',' '{print $1, $2}' file.csv

3.提取特定字段

假设有一个文件,每行有多个字段,例如:

张三 25 工程师

李四 30 经理

你可以只打印第一列(姓名):

复制代码
awk '{print $1}' file.txt

要打印第二列和第三列:

复制代码
awk '{print $2, $3}' file.txt

4.条件匹配

可以使用模式匹配来筛选特定行。例如,只打印年龄大于 30 的行:

复制代码
awk '$2 > 30 {print $0}' file.txt

使用 BEGIN 和 END

复制代码
awk 'BEGIN { print "开始处理文件" } { print $0 } END { print "处理完成" }' file.txt

4.内置变量

awk 提供了一些常用的内置变量,帮助处理数据:

  • $0:整行内容。
  • $1, $2, ..., $n:第 1、2、...、n 个字段。
  • NF:当前行的字段数。
  • NR:当前记录(行)号。
  • FS:输入字段分隔符,默认为空格。
  • OFS:输出字段分隔符,默认为空格。

示例

假设有一个文件 data.txt 内容如下:

1:Small house:Vermont:100 sqm

2:Large house:San Diego:300 sqm

3:Apartment:New York:70 sqm

4:Houseboat:Lond:Seattle:150 sqm

可以使用如下命令打印前两个字段:

复制代码
awk -F':' '{print $1, $2}' data.txt

5.总结

awk 是一种功能强大的文本处理工具,适用于数据分析、日志解析、格式化输出等多种场景。它支持复杂的模式匹配、条件判断、变量使用和函数调用,是 Linux 系统管理员和开发人员不可或缺的工具之一。

相关推荐
古法老登瞎折腾9 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
琥珀.9 小时前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu10 小时前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈12 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
云边云科技_云网融合12 小时前
连锁门店组网怎么做?SD-WAN 多分支组网的架构选型、部署与成本结构
服务器·数据库·php
云上先途112 小时前
企业 AI 服务部署周期多久,会不会影响原有业务运转?
大数据·运维·人工智能
网络小江13 小时前
组网第35课:静态路由——下一跳、出接口、默认路由、浮动静态与黑洞路由
服务器·网络·默认路由·黑洞路由·浮动静态路由
执伞人ONLY13 小时前
AI知识库自动化知识加工没做对,人工整理永远追不上知识产生
运维·人工智能·自动化
slongzhang_13 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
叼烟扛炮13 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节