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本身很安全,默认只读入不修改文件。它和grep、sed并称文本处理三剑客,配合管道(见 §25)威力很大。
小结:awk '{print $1,$4}' 挑列,-F 改分隔符,条件 $4>40000 过滤,BEGIN/END 做汇总统计。