10个超实用的awk应用案例

文章目录

  • 前言
      • 案例 1:统计文本文件的行数、词数、字符数
      • 案例 2:提取 CSV 文件的特定列并计算总和
      • 案例 3:格式化输出系统用户信息
      • 案例 4:分析 Nginx 访问日志的 HTTP 状态码
      • 案例 5:过滤并计算日志中的平均响应时间
      • 案例 6:文本关键词统计
      • 案例 7:处理多行记录
      • 案例 8:生成数据报表
      • 案例 9:复杂条件过滤
      • 案例 10:分析用户行为序列
  • 总结


前言

以下是10个实用的 awk 应用案例及代码说明,涵盖文本处理、数据统计、日志分析等常见场景,并附带示例输入和运行结果。


案例 1:统计文本文件的行数、词数、字符数

目标:模拟 wc 命令功能。
示例输入demo.txt):

Hello World
This is a test file
2023-08-21

代码

awk '{
    lines++
    words += NF
    chars += length($0) + 1  # +1 为换行符
} 
END {
    print "Lines:", lines, "Words:", words, "Chars:", chars
}' demo.txt

运行结果

Lines: 3 Words: 8 Chars: 41

案例 2:提取 CSV 文件的特定列并计算总和

目标:提取第 3 列(金额)并求和。
示例输入sales.csv):

Name,Product,Price
Alice,Book,50
Bob,Pen,15
Charlie,Laptop,3000

代码

awk -F',' 'NR>1 {sum += $3} END {print "Total Sales:", sum}' sales.csv

运行结果

Total Sales: 3065

案例 3:格式化输出系统用户信息

目标:从 /etc/passwd 提取用户名和 Shell,按列对齐。
示例输入/etc/passwd 片段):

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
alice:x:1000:1000:Alice:/home/ali

你可能感兴趣的:(Linux系统,云计算,linux,运维)