linux unix grep sed awk cli devops cheat-sheet

Unix 文本处理大师指南:熟练掌握 Sed、Awk 和 Grep

一份关于使用 Grep、Sed 和 Awk 进行 Unix 文本处理的全面指南。了解如何使用 sed 在线测试工具、awk 在线测试工具和 grep 正则表达式测试器,通过我们的终极速查表掌握这些强大的 CLI 工具。

2026-04-11

Unix 文本处理大师指南:熟练掌握 Sed、Awk 和 Grep

在 Unix 类操作系统(Linux、macOS、BSD)的世界中,文本是通用的接口。无论您是在管理服务器配置、分析日志文件,还是自动化复杂的数据转换,文本处理的“三剑客”——Grep、Sed 和 Awk——都是您最强大的盟友。

本指南深入探讨了这些必备工具,提供了实用的示例、一份全面的速查表,并解释了为什么使用在线游乐场是掌握它们的最快方式。


1. Grep:全局正则表达式打印 (Global Regular Expression Print)

Grep 是这三者中最简单的,专为一项主要任务而设计:搜索与特定模式(通常是正则表达式)匹配的行。

核心语法

grep [选项] "模式" [文件]

常见用例

  • 搜索日志grep "ERROR" /var/log/syslog
  • 递归搜索grep -r "TODO" ./src
  • 忽略大小写搜索grep -i "user" config.json
  • 统计匹配次数grep -c "keyword" data.txt

为什么使用 Grep 正则测试器?

正则表达式可能非常棘手。grep 正则测试器允许您:

  • 实时反馈:立即查看示例文本中哪些行匹配您的模式。
  • 解释模式:许多测试器会分解您的正则各部分的功能(例如,^ 表示行首,\d+ 表示一个或多个数字)。
  • 测试变体:快速在基本 (BRE)、扩展 (ERE) 和 Perl 兼容 (PCRE) 语法之间切换,查看您的环境如何处理该模式。

2. Sed:流编辑器 (Stream Editor)

Sed 是一种非交互式的流编辑器,用于过滤和转换文本。它擅长在不打开文本编辑器的情况下对大文件执行搜索和替换操作。

核心语法

sed [选项] '命令' [文件]

著名的 's' 命令(替换)

sed 's/旧文本/新文本/' 文件名

注意:使用 s/old/new/g 进行全局替换(替换行中所有出现的内容)。

常见用例

  • 替换文本sed 's/localhost/127.0.0.1/g' config.yaml
  • 删除行sed '5,10d' list.txt(删除第 5 到 10 行)
  • 插入文本sed '1i\HEADER' data.csv(在第一行插入 'HEADER')

为什么使用 Sed 在线测试工具?

Sed 命令可能会变成难以调试的复杂“单行脚本”。sed 在线测试工具sed 命令生成器非常有价值,因为:

  • 安全第一:在对生产文件使用 -i(就地修改)标志运行之前,先在示例数据上测试您的替换命令。
  • 复杂性管理:可视化多个管道连接的命令(例如 sed -e '...' -e '...')如何影响输入流。
  • 转义字符帮助:在 shell 环境中处理斜杠、反斜杠和特殊字符是错误的常见来源。生成器会为您处理转义逻辑。

3. Awk:模式扫描和处理语言

Awk 不仅仅是一个命令;它是一种完整的、数据驱动的编程语言。它旨在处理结构化数据(如 CSV 或日志文件),其中文本按字段和记录组织。

核心语法

awk [选项] '模式 { 动作 }' [文件]

关键概念

  • $0:整行内容。
  • $1, $2, ...:第一、第二等字段(列)。
  • NF:当前记录中的字段数。
  • NR:到目前为止处理的记录数(行号)。

常见用例

  • 打印特定列awk '{ print $1, $3 }' data.tsv
  • 按值过滤awk '$3 > 100 { print $1 }' sales.log
  • 计算总和awk '{ sum += $3 } END { print sum }' report.txt

为什么使用 Awk 在线测试工具?

由于 Awk 是一种编程语言,它涉及变量、循环和条件逻辑。awk 在线测试工具可以帮助:

  • 即时输出:在输入时准确查看打印语句和计算如何影响输出。
  • 字段可视化:许多测试器会根据不同的分隔符(制表符 vs 空格 vs 逗号)准确显示 Awk 如何查看您的“列”。
  • 逻辑调试:在 Web 界面中调试 if-else 块比在终端中重复运行脚本要容易得多。

Unix 文本处理速查表

任务 工具 示例命令
搜索字符串 Grep grep "pattern" file
忽略大小写搜索 Grep grep -i "pattern" file
统计匹配行数 Grep grep -c "pattern" file
替换首次出现 Sed sed 's/old/new/' file
替换所有出现 Sed sed 's/old/new/g' file
删除特定行 Sed sed '5d' file
打印第 2 列 Awk awk '{print $2}' file
计算第 3 列总和 Awk awk '{sum+=$3} END {print sum}' file
按第 1 列长度过滤 Awk length($1) > 10

结论:何时使用哪个?

  • 当您只需要查找内容时,使用 Grep
  • 当您需要修改或转换行时,使用 Sed
  • 当您需要分析数据或对字段进行计算时,使用 Awk

对于复杂的任务,不要害怕将它们组合在一起:

grep "ERROR" system.log | awk '{print $4}' | sed 's/\[//g'

掌握这些工具需要时间,但使用在线游乐场会显著降低学习曲线。祝您处理愉快!


Tool3M 上的相关工具