当前位置: 首页 > news >正文

Linux 文本处理“三剑客”:sed命令完全指南

Linux 文本处理“三剑客”:sed命令完全指南

Linux 文本处理“三剑客”里,sed 常被视作批处理利器。面对日志、配置、代码批量重写,个人觉得 sed 的流式思路能让重复操作彻底自动化,下文按照“概念 → 命令 → 参数 → 场景 → 最佳实践”展开。

核心概念
流式编辑器的思维方式
sed 逐行读入文本到 Pattern Space,按脚本匹配后输出或丢弃,原文件默认不被改写。
Hold Space 负责暂存上下文,比如跨多行的匹配;命令循环确保“读取 → 匹配 → 执行 → 输出”不断迭代。
笔者认为理解这种“流经内存而非整体加载”的模式,是写出高性能脚本的前提。
最常用的命令组合

基础命令

打印指定行

sed -n ‘2p’ file.txt

删除匹配行

sed ‘/error/d’ file.txt

在第2行后追加

sed ‘2a 新增行’ file.txt

在第1行前插入

sed ‘1i Header’ file.txt

替换整行

sed ‘3c Replacement’ file.txt

最常用:替换文本

sed ‘s/old/new/’ file.txt
记忆口诀 p/d/a/i/c/s 对应 Print、Delete、Append、Insert、Change、Substitute,能覆盖 80% 的日常改写需求。

控制行为的关键参数

关键参数
-n 关闭默认输出,配合 p 精准打印结果。
-e 串联多条命令,避免多次读取文件。
-i[.bak] 原地修改并可选择生成备份,生产场景应先试跑再落盘。
-E(或 -r)启用扩展正则,处理复杂模式更省心。 替换标志 g/p/I/w 分别代表全局、打印匹配行、忽略大小写、写入文件,可组合使用。在管控日志时常用 -n + p 精选关键信息,再通过 w 输出给后续任务。
文本替换:从简单到进阶

文本替换

每行仅替换第一个匹配

sed ‘s/old/new/’ file.txt

全量替换

sed ‘s/old/new/g’ file.txt

忽略大小写

sed ‘s/old/new/I’ file.txt

反向引用:给行内容加方括号

sed ‘s/^(.*)$/[\1]/’ file.txt

指定行替换:只动第4行

sed ‘4s/old/new/’ file.txt

清理首尾空白

sed ‘s/1//’ file.txt
sed 's/[ \t]
$//’ file.txt
通过地址(行号、正则)+ s///flags 的组合,复杂重构也能拆解为多步替换。

文本增删:精准操控行级内容

文本增删

追加、插入、更换整行

sed ‘2a TODO’ file.txt
sed ‘1i Header’ file.txt
sed ‘3c New line’ file.txt

批量删除

sed ‘1,4d’ file.txt # 删除第1-4行
sed ‘/error/d’ file.txt # 删除包含 error 的行
sed ‘/^KaTeX parse error: Expected 'EOF', got '#' at position 19: … file.txt #̲ 删除空行 sed 'd’ file.txt # 删除最后一行
组合地址范围与命令,可精细裁剪配置文件、批量修正脚本段落。

高级技巧与项目实践

高级技巧
sed -e ‘cmd1’ -e ‘cmd2’ file 将串行逻辑合并,避免多次 IO。
sed -f script.sed file 维护独立脚本文件,利于版本控制与复用。
sed ‘/start/,/end/d’ 等范围命令可快速清理配置块。
管道组合:cat file | sed ‘s/old/new/’ | grep pattern 提升筛选效率。
批量处理:find . -name ‘*.log’ -exec sed -i ‘’ ‘s/old/new/g’ {} + 统一替换日志(macOS 留空后缀即可)。
我认为最佳实践是“先试跑、后写盘”:先用 -n、p、w 验证,确认无误再添加 -i,同时保留 .bak 回滚路径。

与 grep、awk 的协同
grep 负责快速筛选,sed 擅长在筛选结果上做修改;二者串联能实现“查找 + 改写”一体化。
awk 更适合基于列的数据处理;当需要字段级计算后再回写文本时,可先 awk 处理结构化信息,再交给 sed 修饰格式。
在脚本流水线中,合理安排工具顺序,可减少正则重复匹配、降低整体耗时。
结语
sed 的价值在于把“手工重复”变成“脚本流水”。理解流式机制、熟悉命令地址、养成先验证后写盘的习惯,就能在日志治理、配置批处理、CI 自动化里游刃有余。


  1. \t ↩︎

http://www.dtcms.com/a/529256.html

相关文章:

  • Graph + Agents 融合架构:2025年七大创新路径
  • 临沂网站制作费用如何做自己公司网站
  • STM32H723ZGT6 ADC+DMA多通道-老是进入DMA中断错误函数且不进入adc回调函数总结
  • 成毅李一桐《天地剑心》今日开播 热血群像演绎东方英雄故事
  • Atlas 200I A2 加速模块-GPU适配
  • 石家庄职业技术学院教务网络管理系统三明网站优化
  • 【经典书籍】C++ Primer 第18章如何设计一个“好用、好看、好改”的函数精华讲解
  • Qt Creator:避免QRunnable和QObject多重继承
  • 抽奖机网站怎么做wordpress小工具是哪个文件夹
  • 简述网站推广的方法做一个app需要多少成本
  • JsonRpc框架介绍和环境搭建
  • 网站右下角悬浮窗口js代码 兼容各浏览器如何看还在建设的网站
  • qq浏览器收录网站提交入口wordpress 博客 视频
  • 关于宽带网络下公网地址的理解
  • 【面经】2025年软件测试面试题,精选100 道(附答案)
  • 网站风格优势网页设计哪里好
  • 案例研究_CVE-2018-1000517
  • 内存补丁技术:破解与防护的终极对决
  • 20251019状压DP总结
  • 西部数码网站管理助手v3.0产品设计ppt案例
  • 【2073】三角形面积
  • Datawhale秋训营-“大运河杯”数据开发应用创新大赛
  • 7(内存管理)(上)(了解)
  • 成都个人建网站ps软件下载电脑版免费怎么下载
  • 解析常见的限流算法
  • 潼南区做网站的公司中国医院建设协会网站
  • 夸克 × 大模型:从“搜索工具”到“智能体”的演化逻辑
  • 网站正在建设中色综合网页程序开发工具
  • 个人怎么开网上超市福州百度seo
  • 笔试强训(八)