

当日志里一行有十几个字段,你只想要其中一列怎么办?
grep 只能筛选行,但 awk 可以按列处理。
awk 的核心就一句话:
按列处理文本。
简单来说awk就是把文件逐行的读入,
以空格为默认分隔符将每行切片,
切开的部分再进行各种分析处理,
因为切开的部分使用awk可以定义变量,运算符, 使用流程控制语句进行深度加工与分析
创始人 Alfred V. Aho、Peter J. Weinberger和Brian W. Kernighan awk由来是姓氏的首字母
默认用空格作为分隔符。
echo "Tom 20" | awk '{print $1}'

讲解:
• $1 = 第一列
• $2 = 第二列
• $0 = 整行
再来:
echo "Tom 20" | awk '{print $2}'

一句总结:
awk = 行过滤 + 列提取。
🔢 按列提取文件
准备测试文件:
cat test.txt
内容:
Tom 20
Jack 25
Lucy 18 提取姓名:
awk '{print $1}' test.txt

提取年龄:
awk '{print $2}' test.txt

awk 天然适合做结构化数据处理。
awk 不只是取列,它还能加条件。
只显示年龄大于 20:
awk '$2 > 20 {print $1}' test.txt

• 条件写前面
• 动作写花括号里
常用内置变量:
NR = 行号
NF = 当前行列数
示例:
awk '{print NR, $0}' test.txt

统计总行数:
awk 'END {print NR}' test.txt

一句话总结:
awk 自带统计能力。
场景:从系统用户文件中提取用户名。
系统文件:
head -3 /etc/passwd
你会发现是用冒号分隔。
指定分隔符:
awk -F: '{print $1}' /etc/passwd

讲解重点:
• -F 指定分隔符
• $1 提取用户名字段
这才是 awk 在真实运维中的用法。
切割IP
ifconfig | awk '/broadcast/{print}' | awk -F " " '{print $2}'
运行效果

总结一下:
awk 的核心是按列处理文本,
加条件筛选,
还能统计数据。