首页 / Linux 命令行入门教程 / 29. awk 按列处理与统计

Linux 命令行入门教程

29. awk 按列处理与统计

本教程共 90 篇 · 第 29 篇

29. awk 按列处理与统计

awk 是处理”表格型”文本的强手。它把每行按列拆开,让你挑列、算数、做统计。

默认用空白(空格或制表符)分列。第一列叫 $1,第二列 $2,整行是 $0

假设有个员工文件,每行是「姓名 职位 部门 工资」:

awk '{print $1, $4}' emp.txt

这条只打印姓名和工资两列。逗号让它们用空格隔开。

-F 指定分隔符

数据不是空格分隔时,用 -F 改分隔符。比如处理 CSV 逗号分隔:

awk -F',' '{print $1, $3}' data.csv

加条件过滤

只想要工资高于 40000 的人:

awk '$4 > 40000 {print $1, $4}' emp.txt

$4 > 40000 是条件,满足才执行后面的打印。

BEGIN 与 END

BEGIN 在处理前跑一次,END 在处理后跑一次。常用来做统计汇总。

比如数行数、累加工资:

awk 'BEGIN {sum=0} {sum=sum+$4} END {print "总工资:", sum}' emp.txt

BEGIN 把 sum 归零,每行加到 sum,最后 END 打印总数。

Note

awk 本身很安全,默认只读入不修改文件。它和 grepsed 并称文本处理三剑客,配合管道(见 §25)威力很大。

小结:awk '{print $1,$4}' 挑列,-F 改分隔符,条件 $4>40000 过滤,BEGIN/END 做汇总统计。