文本处理

文本处理

文本处理是 Shell 脚本最擅长的事情之一。Linux 系统中几乎所有的配置文件、日志文件、数据文件都是文本格式,掌握文本处理工具,就等于掌握了系统管理的钥匙。

为什么文本处理如此重要

Linux 的设计哲学之一就是"一切皆文件"。系统的配置信息存放在文本文件中,程序的输出是文本,日志记录也是文本。日常工作中,我们需要从海量日志中查找错误、从配置文件中提取参数、对数据进行统计分析,这些都离不开文本处理。

Shell 提供了一系列强大的文本处理工具,它们遵循 Unix 哲学:每个工具只做一件事,做好一件事,然后通过管道组合起来解决复杂问题。

核心工具介绍

grep:文本搜索利器。能在文件中快速查找匹配的行,支持正则表达式,是日志分析、代码搜索的必备工具。

sed:流编辑器。可以对文本进行替换、删除、插入等操作,特别适合批量修改文件内容。

awk:文本处理语言。功能强大,可以按列处理数据、进行计算、生成报表,是数据处理的瑞士军刀。

cut:文本切割工具。按字符、字节或字段提取文本的特定部分,简单直接。

sort:排序工具。可以对文本行进行排序,支持数字排序、逆序、按字段排序等。

uniq:去重工具。去除相邻的重复行,常与 sort 配合使用。

tr:字符转换工具。可以进行字符替换、删除、压缩,适合简单的字符处理。

工具的选择

面对一个文本处理任务,如何选择合适的工具?

查找匹配的行:用 grep。比如从日志中找错误信息,从代码中找函数定义。

替换文本内容:简单的替换用 sed,复杂的格式化用 awk。

按列处理数据:cut 适合简单的字段提取,awk 适合复杂的列操作和计算。

排序和统计:sort 排序,uniq 去重统计,两者经常配合使用。

字符转换:大小写转换、删除特定字符用 tr。

本章内容

这一章我们逐一学习这些工具:

  • grep 文本搜索:基本搜索、正则表达式、常用选项
  • sed 流编辑器:替换、删除、插入、多行处理
  • awk 文本处理:字段操作、条件判断、内置函数
  • cut 切割文本:按字符、字节、字段切割
  • sort 排序:数字排序、字段排序、逆序
  • uniq 去重:去除重复、统计次数
  • tr 字符转换:字符替换、删除、压缩

掌握这些工具,就能应对绝大多数文本处理场景。它们组合起来,威力更是惊人。