sed/grep/awk全景解析

文本分析三剑客:sed/awk/grep 全景解析

data-ad-format="fluid" data-ad-layout-key="-7k+ex-4a-9w+4a">

一、前世今生与技术定位
■ grep:诞生于1974年UNIX V5系统1,4,源自ed编辑器中的”g/re/p”(全局正则表达式打印)操作,成为首个正则表达式搜索工具
■ sed:1977年由Lee E. McMahon开发4,基于ed编辑器思想实现流式编辑,适合非交互式批量文本修改
■ awk:1977年由Alfred Aho、Peter Weinberger和Brian Kernighan开发6,8,首创基于数据字段的编程模型,成为结构化数据处理标杆

二、核心功能与基础用法对比

工具核心能力典型命令示例

grep模式匹配/行级过滤grep -iRn “error” *.log
sed流式文本编辑sed ‘s/old/new/g; 5d’ file
awk字段处理/统计计算awk ‘{sum+=$3} END{print sum}’ data

三、高阶技巧与组合应用

  1. grep进阶能力
    ■ 上下文控制:grep -C3 “panic” 显示匹配前后3行9
    ■ 多模式匹配:grep -E “error|warning” 支持扩展正则10
    ■ 二进制处理:grep -a “text” binary 强制解析二进制文件9

  2. sed黑魔法
    ■ 多行处理:sed ‘N; s/\n//‘ 合并相邻行1
    ■ 条件分支:/start/,/end/ s/old/new/ 范围替换4
    ■ 模式空间交换:h;n;G 实现行重排序1

  3. awk编程范式
    ■ 多维数组:awk ‘{cnt[$1]++} END{for(k in cnt) print k,cnt[k]}’ 分组统计7
    ■ 数学计算:awk ‘BEGIN{print log(10)}’ 内置数学函数8
    ■ 网络通信:awk ‘/GET/ {print | “curl -X POST”}’ 管道调用外部命令6

四、现代衍生产品

  1. 性能增强版
    ■ ack/ag/rg:支持.gitignore的快速递归搜索工具(基于grep思想)9
    ■ jq:JSON专用处理工具(awk的领域特化版)

  2. 语言扩展版
    ■ perl:整合三剑客功能的全能脚本语言
    ■ miller:支持CSV/JSON的现代数据工具(awk精神延续)

黄金组合技巧:

  1. 日志分析流水线:grep “ERROR” | sed ‘s/.*[//‘ | awk ‘{print $1}’ | sort | uniq -c10
  2. 数据清洗三板斧:grep过滤无效行 → sed修正格式 → awk生成统计报表8
  3. 正则表达式最佳实践:优先使用PCRE标准(grep -P)处理复杂模式9

table {
border-collapse: collapse;
width: 100%;
margin: 20px 0;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
}
th {
background-color: #f8f9fa;
}
blockquote {
border-left: 3px solid #0073aa;
padding-left: 15px;
color: #666;
}
code {
background: #f6f7f8;
padding: 2px 5px;
border-radius: 3px;
}

引用说明
1 sed命令详解(吴易娃)
4 sed原理与高级用法(Linux社区)
6 awk编程指南(开发者社区)
7 awk高级技巧(技术博客)
8 grep实战手册(Worktile)
9 grep高级教程(开发者指南)
10 三剑客组合应用(技术总结)

data-ad-format="auto" data-full-width-responsive="true">