百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

AWK 语法速查表(Linux 文本处理工具实用指南)

gudong366 2025-07-24 20:50 8 浏览


本文适用于系统管理员、运维工程师、开发人员以及数据处理人员,提供 速查+示例 的格式,方便在使用 AWK 时快速查阅。





1. 基本结构


awk '条件 {动作}' 文件名


  • 条件:可以是模式匹配、表达式、行号等
  • 动作:执行的操作,如 print、赋值、统计等
  • 默认操作为 print $0(即打印整行)




2. 常用内建变量


变量

含义

$0

当前整行

$1~$n

第 1 至第 n 个字段

NR

当前处理的行号

FNR

当前文件中的行号(用于多文件)

NF

当前行字段总数

FS

输入字段分隔符(默认空格)

OFS

输出字段分隔符

RS

输入行分隔符(默认换行)

ORS

输出行分隔符

FILENAME

当前正在处理的文件名





3. 快速命令速查(经典用法)



基础操作


awk '{print}' file.txt # 打印每一行

awk '{print $1}' file.txt # 打印第一列

awk '{print $1, $3}' file.txt # 打印第1和第3列

awk '{print NR, $0}' file.txt # 打印行号+整行内容


条件匹配


awk '$1 == "root"' /etc/passwd # 第1列是root的行

awk '$3 > 1000' /etc/passwd # 第3列大于1000的行

awk '$1 ~ /nginx/' access.log # 第1列包含nginx

awk '$1 !~ /test/' file.txt # 第1列不包含test


多条件


awk '$3 > 50 && $3 < 100' scores.txt

awk '$2 == "yes" || $4 == "pass"' file.txt


范围与行号


awk 'NR==3' file.txt # 第3行

awk 'NR>=2 && NR<=5' file.txt # 第2~5行

awk 'NR%2==0' file.txt # 偶数行





4. 格式化输出


awk '{printf "Name: %-10s Score: %3d\n", $1, $2}' students.txt


  • %-10s:左对齐字符串,宽度10
  • %3d:右对齐数字,宽度3





5. 统计计算


awk '{sum += $2} END {print "Total:", sum}' file.txt

awk '{if($2>60) pass++} END {print "Passed:", pass}'

awk '{count++; sum+=$3} END {print "Avg:", sum/count}'





6. 字符串处理函数


函数

用法示例

说明

length(s)

length($1)

返回长度

substr(s,m,n)

substr($1,2,3)

字符串子串

index(s,t)

index($1,"abc")

子串位置

tolower(s)

tolower($1)

转小写

toupper(s)

toupper($1)

转大写

split(s,a,sep)

split($1,arr,",")

字符串分割为数组




7. 数组与聚合


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

awk '{sum[$2]+=$3} END {for (i in sum) print i, sum[i]}' scores.txt


  • 实现“分组计数 / 分组求和”等聚合功能





8. BEGIN 与 END 模块


awk 'BEGIN {print "Start"} {print $1} END {print "Done"}' file.txt


  • BEGIN{}:在读文件前执行一次
  • {}:每行执行
  • END{}:读完后执行一次






9. 设置分隔符(输入/输出)


awk 'BEGIN {FS=":"; OFS=","} {print $1, $3}' /etc/passwd


  • FS=":":输入按冒号分割
  • OFS=",":输出用逗号连接字段






10. 实用小技巧合集


用法

示例

查看字段数

awk '{print NF}'

删除首列

awk '{$1=""; print}'

删除空行

awk 'NF>0'

查看最大值

awk '$1>max {max=$1} END{print max}'

倒序输出

awk '{a[NR]=$0} END{for(i=NR;i>=1;i--) print a[i]}'





示例练习题(建议实操)



  1. 提取 CSV 中年龄 > 30 的用户行
  2. 统计访问日志中每个 IP 的访问次数
  3. 计算学生成绩表的平均分和最高分
  4. 删除日志中重复行,仅保留第一条
  5. 将原始数据表按字段重排序并输出为 JSON 格式(进阶)






总结:常见 awk 使用清单


类别

关键命令

打印

print / printf

条件

== != ~ !~

结构

BEGIN / END

变量

$0 $1 NF NR

分隔符

FS / OFS

聚合

sum[] / count[]

函数

length substr split

相关推荐

一文讲清怎么利用Python实现Linux系统日志检索分析管理系统

摘要:在现代IT运营与开发中,日志分析早已成为不可或缺的核心环节。无论是排查系统故障、进行安全审计,还是优化服务性能,日志文件始终是最真实、最权威的信息来源。Linux系统作为主流的服务器操作系统,其...

Linux 思维导图整理(建议收藏)(linux知识点总结思维导图)

今天整理了一下收集的Linux思维导图。Linux学习路径Linux桌面介绍FHS:文件系统目录标准Linux需要特别注意的目录Linux内核学习路线地址:https://www.jiansh...

什么是操作系统(什么叫做操作系统)

Linux也是众多操作系统之一,要想知道Linux是什么,首先得说一说什么是操作系统。计算机是一台机器,它按照用户的要求接收信息、存储数据、处理数据,然后再将处理结果输出(文字、图片、音频、视频...

Windows操作系统和Linux操作系统有什么不同?

每天一分钟,关注我学更多今天的内容是Windows操作系统和Linux操作系统在多个方面存在显著差异,主要体现在用户界面、开源性、稳定性和安全性等方面。用户界面:Windows操作系统提供直观高效的图...

每日学习“IT”是什么呢?(it学习网站)

IT是信息技术(InformationTechnology)的简称,它是一个广泛的领域,涉及到利用计算机、网络通信技术、软件等来存储、处理、传输和获取信息。计算机硬件硬件组成部分:包括中央处理器(...

CAD是什么?如何选择最适合你的CAD软件?

CAD(计算机辅助设计)是建筑、机械、电子等行业的核心工具,通过数字化手段实现高精度设计与协作。传统CAD软件如AutoCAD功能强大,但操作复杂、成本高昂,而轻量化工具又难以满足专业需求。元图CAD...

Linux是什么?(linux是什么意思)

在今天的时代,计算机系统已经成为了我们生活中不可或缺的一部分。而Linux则是目前世界上最为流行和免费的操作系统之一,它以其自由和开放源代码的特点,吸引了全球大量的程序员和开发者前来使用和修改。那么,...

牛人带你通透理解高可用网络基础架构的关键组件:负载均衡机制

上篇给大家介绍的内容是微服务网关:Zuul源码解析,相信大家已经领会并且贯通了;那么本文将给大家介绍的内容是负载均衡:负载均衡机制。负载均衡负载均衡(LoadBalance)是分布式网络环境中的重要...

Linux运维网络篇(linux运维网站)

Linux运维过程中,我们会遇到各种形形色色的网络问题,今天我们就常见的检测手段以及处理办法给大家做一下统一分享。第一节:网络探测首先,我们需要通过各种命令来探测网络是否畅通,进而跟踪锁定到实际...

Nginx正向代理、反向代理、负载均衡及性能优化

一、Nginx是什么Nginx是一款高性能的HTTP和反向代理服务器,由俄罗斯人IgorSysoev(伊戈尔·赛索耶夫)为俄罗斯网站Rambler.ru开发的,在Rambler.ru网站平稳的运...

nginx负载均衡配置(nginx负载均衡配置教程)

Nginx是什么没有听过Nginx?那么一定听过它的“同行”Apache吧!Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(UniformResources...

Springmvc使用Nginx负载均衡session共享

上一节,我们讲到nginx的结构组成,已经把模块、还有之前谈及负载均衡知识时候遗留的东西进行了讲解,那么今天我们继续把使用nginx做负载均衡的时候,如何处理session的方法做个解析,如何有需要对...

Linux 系统卡顿问题的排查思路(linux系统突然非常卡)

#Linux系统卡顿问题排查思路当Linux系统出现卡顿问题时,可以按照以下系统性排查思路进行分析和解决:##1.快速检查系统整体状态###查看系统负载```bashuptimetophto...

一文搞懂LVS负载均衡工作原理 :NAT、DR、TUN模式

大家好,我是IT售前工程师Bernie。LVS(LinuxVirtualServer)是企业中常用的负载均衡方案,是一种基于Linux虚拟服务器,也是Linux标准内核的一部分。它能够实现高性...

从零构建高性能 LVS + Keepalived 四层负载均衡集群实战指南

一、前言在大型网站架构中,四层负载均衡是流量调度的第一道防线。相比七层(如Nginx、HAProxy),四层(基于IP/端口转发)在性能上更具优势。LVS(LinuxVirtualServer...