Sed文本处理完全指南 - 掌握Linux流编辑器
Sed(Stream Editor)是Linux系统中最强大的文本处理工具之一。作为一个流编辑器,Sed能够对文本进行自动化的编辑、转换和处理操作。本文将深入探讨Sed的各种用法,从基础到高级,帮助您掌握这个强大的文本处理工具。
目录
Sed基础概念
工作原理
Sed采用流式处理模式,工作流程如下:
- 读取:从输入源(文件或标准输入)读取一行
- 处理:根据命令序列处理当前行
- 输出:将处理后的行输出到标准输出
- 重复:重复步骤1-3,直到所有行处理完毕
输入 → 模式空间 → 命令序列 → 输出
↑
保持空间(可选)
关键概念:
- 模式空间(Pattern Space):当前处理的行所在的工作区
- 保持空间(Hold Space):临时存储数据的区域
- 自动打印(Auto-print):默认处理后自动打印模式空间内容
基本语法
# 基本语法
sed [选项] '命令' 文件名
# 常用选项
-n, --quiet, --silent # 抑制自动打印
-i[扩展名] # 直接修改文件(就地编辑)
-e 脚本 # 指定多个编辑命令
-f 脚本文件 # 从文件读取命令
-r, -E # 使用扩展正则表达式
地址寻址
Sed通过地址指定要处理的行:
# 无地址:处理所有行
sed '命令' file.txt
# 单行号:处理指定行
sed '3p' file.txt # 只处理第3行
# 地址范围:处理指定范围
sed '1,5p' file.txt # 处理第1-5行
sed '3,$p' file.txt # 处理第3行到最后一行
# 步长:每隔指定行数处理一次
sed '1~2p' file.txt # 处理奇数行(1,3,5...)
# 模式匹配:匹配模式的行
sed '/ERROR/p' file.txt # 匹配包含ERROR的行
# 组合地址
sed '/start/,/end/p' file.txt # 从匹配start的行到匹配end的行