《AWK 附录》
📚 A. 常用参考资料
🔗 官方文档链接
💬 社区论坛与讨论组
🧩 开源项目示例
📋 B. 快速参考手册
📝 awk 常用命令速查表
| 功能 |
示例命令 |
说明 |
| 打印第 1 列 |
awk '{print $1}' file | $1 表示第一列 |
|
| 按字段筛选 |
awk '$3 == "error"' file |
第三列为 error 的行 |
| 按关键字匹配 |
awk '/error/' file |
包含 error 字符串的行 |
| 设置字段分隔符 |
awk -F: '{print $1}' /etc/passwd |
-F 指定分隔符为冒号 |
| 输出总行数 |
awk 'END {print NR}' file |
NR 表示记录总数 |
| 统计字段出现次数 |
awk '{a[$1]++} END {for(k in a) print k, a[k]}' file |
使用数组统计 IP 出现频率 |
| 条件判断 |
awk '$5 > 100 {print $0}' file |
第五列大于 100 的行输出 |
| 内置变量赋值 |
awk -v var="test" '{print var}' file |
使用 -v 传参给脚本 |
| 多条件组合 |
awk '$3 == "error" && $5 > 100' file |
多个逻辑条件组合 |
| 执行外部命令 |
awk '{system("echo " $1)}' file |
使用 system() 调用 shell 命令 |
🧮 内置函数与变量列表
✅ 常用内置变量
| 变量名 |
含义 |
示例 |
NR |
当前记录号(行号) |
NR == 1 表示第一行 |
NF |
当前记录中的字段数 |
NF >= 5 表示至少 5 个字段 |
FS |
输入字段分隔符 |
BEGIN {FS=":"} |
OFS |
输出字段分隔符 |
BEGIN {OFS=","} |
RS |
输入记录分隔符(默认换行) |
RS="\n\n" 表示按空行分隔记录 |
ORS |
输出记录分隔符 |
ORS="---\n" |
FILENAME |
当前处理的文件名 |
print FILENAME |
ARGC, ARGV |
命令行参数个数和数组 |
ARGV[1] 获取第一个参数 |
🛠️ 常用内置函数
| 函数名 |
功能 |
示例 |
length() |
返回字符串长度 |
length($0) |
index(s, t) |
查找子串位置 |
index("hello", "e") → 2 |
substr(s, i, n) |
截取子串 |
substr("hello", 2, 3) → ell |
split(s, arr, sep) |
分割字符串到数组 |
split("a,b,c", a, ",") |
match(s, re) |
正则匹配 |
match($0, /error/) |
sub(re, repl, s) |
替换第一次匹配 |
sub(/old/, "new", str) |
gsub(re, repl, s) |
替换全部匹配 |
gsub(/old/, "new", str) |
tolower(), toupper() |
转换大小写 |
tolower("HELLO") → hello |
system(cmd) |
执行系统命令 |
system("date") |
systime() |
获取当前时间戳 |
systime() |
strftime(fmt, timestamp) |
格式化时间 |
strftime("%Y-%m-%d") |
📌 总结
掌握这些常用的参考资料、命令速查表和内置函数/变量,将极大提升你在 Ubuntu、CentOS、EulerOS 等不同 Linux 发行版下的 AWK 编程效率。
无论是日常运维、日志分析、数据清洗,还是构建自动化脚本,这份《AWK 附录》都将是你随身携带的“瑞士军刀”!🛠️📘🔥
继续深入学习,你将能写出更复杂、更优雅、更健壮的 AWK 脚本,成为真正的 Linux 文本处理大师!🚀🧠💻