AWK 附录

《AWK 附录》


📚 A. 常用参考资料

🔗 官方文档链接

名称 链接 描述
GNU Awk User's Guide https://www.gnu.org/software/gawk/manual/gawk.html GNU AWK(gawk)官方手册,最权威的参考资料
POSIX Awk 规范 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html POSIX 标准定义的 awk 行为,适用于所有 Unix 系统
One-liners Awk Examples https://github.com/dosentmatter/awk-one-liners-cn 中文翻译的常用 awk 单行命令合集,适合快速上手

💬 社区论坛与讨论组

平台 地址 描述
Stack Overflow https://stackoverflow.com/questions/tagged/awk 全球最大编程问答平台,关于 awk 的问题基本都能找到答案
Reddit - r/awkiwi https://www.reddit.com/r/awkiwi/ 小众但活跃的 awk 爱好者社区
LinuxQuestions.org https://www.linuxquestions.org/questions/programming-9/ Linux 编程板块中常有 awk 技术交流
GitHub Gist 搜索 https://gist.github.com/search?q=awk 可以搜索到大量实战代码片段和脚本示例

🧩 开源项目示例

项目 地址 描述
awk-cheat-sheet https://github.com/0xAX/awk-cheat-sheet 非常实用的 awk cheat sheet,涵盖常见操作
awk-scripts https://github.com/dosentmatter/awk-scripts 实战级 awk 脚本集合,包括日志分析、数据清洗等
loggrep.awk https://github.com/simeji/loggrep.awk 一个基于 awk 构建的日志查询工具
csv2html.awk https://github.com/lingtalfi/csv2html.awk 使用 awk 实现 CSV 转 HTML 表格的小工具

📋 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 文本处理大师!🚀🧠💻

posted @ 2025-06-22 23:32  红尘过客2022  阅读(35)  评论(0)    收藏  举报