【Linux命令大全】003.文档编辑之sed命令(实操篇)

【Linux命令大全】003.文档编辑之sed命令(实操篇)

✨ 本文为Linux系统文档编辑与文本处理命令的全面汇总与深度优化,结合图标、结构化排版与实用技巧,专为高级用户和系统管理员打造。

(关注不迷路哈!!!)

文章目录

  • 【Linux命令大全】003.文档编辑之sed命令(实操篇)
    • 一、功能与作用
    • 二、基本用法
      • 1. 文本替换
      • 2. 原地修改文件
      • 3. 静默模式
      • 4. 多重命令
      • 5. 从文件读取脚本
      • 6. 删除行
    • 三、高级用法
      • 1. 插入和追加文本
      • 2. 替换整行
      • 3. 使用正则表达式
      • 4. 处理多行文本
      • 5. 循环和分支
      • 6. 与其他命令结合使用
    • 四、实用技巧与常见问题
      • 实用技巧
      • 常见问题
    • 五、总结

一、功能与作用

sed命令是Linux系统中的一个流编辑器,全称为"Stream Editor"。它用于非交互式地对文本进行替换、删除、插入等操作,可以处理来自标准输入或文件的文本流。sed命令是自动化脚本中的核心工具之一,特别适合批量处理文本文件、修改配置文件、清理日志等场景。它通过正则表达式实现强大的文本匹配和处理能力,是Linux文本处理工具链中不可或缺的一环。

参数详解

参数说明
-i原地修改文件
-n不输出未匹配行
-e script执行脚本
-f file从文件读取脚本
-r-E使用扩展正则表达式
s替换操作
d删除操作
i插入操作
a追加操作
c替换整行

二、基本用法

1. 文本替换

sed命令最基本的功能是文本替换,使用s命令(substitute):

# 替换文本(将old替换为new)sed's/old/new/'file.txt# 全局替换(替换所有匹配项)sed's/old/new/g'file.txt# 替换指定行(第5行)sed'5s/old/new/'file.txt# 替换行范围(第3到第10行)sed'3,10s/old/new/'file.txt# 替换所有行中的第3个匹配项sed's/old/new/3'file.txt

2. 原地修改文件

使用-i参数可以直接修改文件内容,而不是输出到标准输出:

# 原地修改文件(备份原文件为file.txt.bak)sed-i.bak's/old/new/g'file.txt# 原地修改不备份sed-i's/old/new/g'file.txt# 批量原地修改多个文件sed-i's/foo/bar/g'*.txt

3. 静默模式

使用-n参数可以禁止输出未匹配的行,只输出匹配或被修改的行:

# 只输出匹配的行sed-n's/error/warning/p'log.txt# 只输出被替换的行sed-n's/old/new/p'file.txt

4. 多重命令

可以在一个sed命令中执行多个操作,使用-e参数或分号分隔:

# 使用多个-e参数sed-e's/old/new/g'-e's/foo/bar/g'file.txt# 使用分号分隔多个命令sed's/old/new/g;s/foo/bar/g'file.txt

5. 从文件读取脚本

使用-f参数可以从文件中读取sed命令脚本:

# 创建sed脚本文件echo's/old/new/g'>sed_commands.txtecho's/foo/bar/g'>>sed_commands.txt# 执行脚本文件中的命令sed-f sed_commands.txt input.txt

6. 删除行

使用d命令可以删除匹配的行:

# 删除第5行sed'5d'file.txt# 删除第3到第10行sed'3,10d'file.txt# 删除包含特定内容的行sed'/pattern/d'file.txt# 删除空行sed'/^$/d'file.txt

三、高级用法

1. 插入和追加文本

使用i命令可以在指定位置前插入文本,使用a命令可以在指定位置后追加文本:

# 在第1行前插入文本sed'1i Inserted text'file.txt# 在第5行后追加文本sed'5a Appended text'file.txt# 在匹配行前插入文本sed'/pattern/i Insert before pattern'file.txt# 在匹配行后追加文本sed'/pattern/a Append after pattern'file.txt

2. 替换整行

使用c命令可以替换整行文本:

# 替换第3行sed'3c New line content'file.txt# 替换匹配行sed'/old line/c New line'file.txt# 替换行范围sed'5,10c All these lines are replaced'file.txt

3. 使用正则表达式

sed命令支持丰富的正则表达式语法,可以进行复杂的文本匹配和处理:

# 使用正则表达式替换sed's/^\s*//'file.txt# 删除行首空白sed's/\s*$//'file.txt# 删除行尾空白# 使用扩展正则表达式(-r或-E)sed-r's/(word1) (word2)/\2 \1/'file.txt# 交换两个单词# 捕获组和反向引用sed's/(name=)([^,]+)/\1replaced/'file.txt# 替换name=后面的值

4. 处理多行文本

sed命令也可以处理跨越多行的文本:

# 替换跨行文本(将包含line1和line2的两行替换为new content)sed'/line1/{N;s/line1\nline2/new content/}'file.txt# 合并多行sed':a;N;$!ba;s/\n/ /g'file.txt# 将所有行合并为一行# 插入空行使段落分开sed'G'file.txt# 在每行后插入空行

5. 循环和分支

sed命令支持简单的循环和分支结构:

# 使用标签和分支sed':loop; s/old/new/; t loop'file.txt# 重复替换直到没有匹配项# 条件分支sed'/pattern/{s/old/new/; b}; s/default/replace/'file.txt# 循环处理文件sed':a; $!{N; ba}; s/\n/ /g'file.txt# 读取整个文件到模式空间

6. 与其他命令结合使用

sed命令可以与其他Linux命令结合使用,实现更强大的功能:

# 过滤并处理日志文件catlog.txt|grep'ERROR'|sed's/ERROR/严重错误/g'>errors.txt# 处理命令输出ls-la|sed's/\s\+/,/g'>file_list.csv# 将空格分隔的输出转换为CSV# 批量重命名文件ls*.txt|sed's/\(.*\)\.txt/mv "&" "\1_new.txt"/'|sh# 生成报表catdata.txt|sed'1i Header line'|sort|sed'$a Footer line'>report.txt

四、实用技巧与常见问题

实用技巧

  1. 使用&符号:在替换模式中,&符号表示整个匹配的内容:

    sed's/word/[&]/g'file.txt# 将word替换为[word]
  2. 转义特殊字符:在sed命令中,某些字符需要转义,如/&\等:

    sed's/http:\/\/\(.*\)/<a href="&">\1<\/a>/'file.txt# 将URL转换为链接
  3. 改变分隔符:可以使用其他字符作为分隔符,避免对路径等包含/的内容进行转义:

    sed's|/path/to/old|/path/to/new|g'file.txt# 使用|作为分隔符
  4. 备份文件:在使用-i参数时,可以指定备份后缀,保留原始文件:

    sed-i.bak's/old/new/g'file.txt# 备份为file.txt.bak

常见问题

  1. 正则表达式不匹配:确保正则表达式语法正确,特别是特殊字符的转义。使用-r-E参数可以使用扩展正则表达式,减少转义字符的使用。

  2. 原地修改权限问题:编辑系统文件或其他用户的文件时,需要管理员权限,可以使用sudo命令。

  3. 处理二进制文件sed命令主要用于文本文件,不适合处理二进制文件。处理二进制文件可以使用bvihexedit等工具。

  4. 性能问题:对于特别大的文件,sed命令的处理速度可能会受到影响。可以考虑将大文件分割成多个小文件,或者使用更高效的工具如awk

五、总结

sed命令是Linux系统中一个功能强大的流编辑器,用于非交互式地对文本进行替换、删除、插入等操作。它通过正则表达式实现强大的文本匹配和处理能力,在自动化脚本、文本处理、日志分析等场景中有广泛的应用。sed命令虽然学习曲线较陡,但其强大的功能使其成为Linux系统管理员和开发人员的必备工具。通过本文的详细介绍和实例,相信您已经掌握了sed命令的基本用法和高级技巧,可以在日常工作中灵活运用这个工具来处理各种文本处理任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1124505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026全新版Java面试八股文.pdf出炉, 简直把所有 Java 知识面试题写出来了

作为一个 Java 程序员&#xff0c;你平时总是陷在业务开发里&#xff0c;每天噼里啪啦忙敲着代码&#xff0c;上到系统开发&#xff0c;下到 Bug 修改&#xff0c;你感觉自己无所不能。然而偶尔的一次聚会&#xff0c;你听说和自己一起出道的同学早已经年薪 50 万&#xff0c;而…

【万字硬核】从GPT-5.2到Sora2:深度解构多模态大模型的“物理直觉”与Python全栈落地指南(内含Banana2实测)

摘要&#xff1a; 当我们在谈论大模型时 我们在谈论什么 是参数量的暴力美学 还是Transformer架构的无限延展 2025年的AI界 已经不再满足于文本的生成 GPT-5.2-Pro开始具备了逻辑推理的“慢思考”能力 Sora2与Veo3正在试图模拟物理世界的运行规律 而Banana2则在图像生成的语义理…

基于STM32的运动信息检测装置设计与实现

基于STM32的运动信息检测装置设计与实现 第一章 系统设计背景与需求分析 随着全民健身意识提升&#xff0c;运动数据的精准监测成为科学健身与健康管理的核心需求。传统运动检测设备如计步器&#xff0c;多依赖单一加速度传感器&#xff0c;存在参数片面、精度不足&#xff08;…

基于高频信号注入的三相永磁同步电机无传感器控制仿真之旅

基于高频信号注入的三相永磁同步电机无传感器控制仿真&#xff1b;旋转电压输入的&#xff0c;PMSM&#xff1b;Matlab仿真在电机控制领域&#xff0c;三相永磁同步电机&#xff08;PMSM&#xff09;因其高效、节能等优点被广泛应用。然而&#xff0c;传统的PMSM控制往往依赖传…

技术筑基,生态先行:边界智能如何领跑中国区块链产业

数字经济浪潮下&#xff0c;区块链技术正重塑产业价值流转模式&#xff0c;成为驱动高质量发展的关键引擎。在这片充满机遇的赛道上&#xff0c;边界智能&#xff08;BIANJIE.AI&#xff09;凭借全方位的核心优势&#xff0c;稳居中国区块链行业龙头地位&#xff0c;排名持续领…

[SSM]SpringBoot

SpringBoot简介 入门案例 回顾SpringMVC开发的步骤 创建工程&#xff0c;并在 pom.xml 配置文件中配置所依赖的坐标 编写 web3.0 的配置类 编写 SpringMVC 的配置类 编写 Controller 类 从上面的 SpringMVC 程序开发可以看到&#xff0c;前三步都是在搭建环境&#xff0c;而…

MATLAB代码:基于二阶锥优化的电气综合能源系统多目标无功优化(配网设备模型及网损优化方案研究

MATLAB代码&#xff1a;基于二阶锥优化的电气综合能源系统多目标无功优化 关键词&#xff1a;配电网 无功优化 二阶锥 电气综合能源系统 参考文档&#xff1a;《含高比例光伏的配电网有功-无功功率多目标协调优化》参考部分配电网设备模型&#xff0c;非完全复现&#xff0c;…

数据库性能测试最佳实践

在当今数据驱动的时代&#xff0c;数据库作为企业应用的核心组件&#xff0c;其性能直接影响系统稳定性、用户体验和业务连续性。据统计&#xff0c;性能瓶颈导致的应用故障占比高达40%以上&#xff08;源自2025年Gartner报告&#xff09;&#xff0c;而数据库往往是关键瓶颈点…

【必学收藏】智能体是什么?深入解析ReAct范式,助力AI开发者快速上手大模型智能体技术

本文解析AI智能体概念及ReAct范式&#xff0c;介绍不同来源对智能体的定义&#xff0c;详细阐述ReAct的核心思想——将推理与行动交错联合&#xff0c;形成Thought->Act->Observe工作流程。通过案例演示ReAct应用&#xff0c;探讨工具技术发展路径&#xff0c;总结智能体…

MSRP协议:即时通信中的多媒体传输基石

目录 一、协议起源与设计定位 二、协议架构与核心机制 2.1 传输层依赖与连接管理 2.2 消息格式与分片机制 2.3 状态报告与错误处理 三、协议优势与应用场景 3.1 突破传统限制的传输能力 3.2 灵活的拓扑支持 3.3 与SIP的深度协同 四、结语 在数字化通信飞速发展的今天…

腾讯云渠道商:如何在CVM 上手动搭建 LNMP 环境?

一、引言LNMP&#xff08;LinuxNginxMySQLPHP&#xff09;作为主流 Web 服务环境&#xff0c;在腾讯云 CVM 上部署仅需简单四步。本文避开复杂配置&#xff0c;提供极简搭建方案&#xff0c;助您快速构建网站运行基础。二、核心步骤1.系统准备登录 CVM 控制台创建 CentOS 实例S…

2026亲测成都有机肥供应厂家推荐

【有机肥】哪家好&#xff1a;专业深度测评在现代农业中&#xff0c;有机肥的使用越来越受到重视。为了帮助种植户选择合适的有机肥供应商&#xff0c;本文将对成都地区的有机肥供应商进行详细测评&#xff0c;重点推荐盖尔盖司。1. 测评背景与目的随着环保意识的增强和农业可持…

巴耶赫利俄语网站开发

巴耶赫利(bayeheli.com) 是一家专业的俄语网站开发团队&#xff0c;专注于为中国企业提供俄语市场数字化解决方案&#xff0c;帮助中国品牌出海俄罗斯。 核心服务 1. 俄语网站建设 定制化设计&#xff1a;根据俄罗斯用户习惯和文化背景设计界面 响应式布局&#xff1a;适配…

收藏!字节员工转岗大模型岗拿11W月薪,传统开发的AI风口逆袭指南

最近科技圈一个话题彻底火了——一位字节跳动的传统开发工程师&#xff0c;成功跨界转型算法大模型岗位后&#xff0c;直接在社交平台晒出了月薪11万的工资条。帖子一经发出&#xff0c;评论区瞬间被“羡慕哭了”“这波转型太值了”“我也想转”的留言刷屏&#xff0c;满屏的羡…

【异常】Antigravity工具提示One moment, the agent is currently loading...

一、报错内容二、报错说明 这是Antigravity工具的操作界面&#xff0c;当前处于智能代理&#xff08;Agent&#xff09;的加载状态&#xff0c;以下是其核心信息&#xff1a; 工具定位&#xff1a;Antigravity属于AI辅助开发类工具&#xff0c;核心是通过智能代理&#xff08;A…

收藏!Agent全面爆发!万字长文吃透上下文工程(小白程序员入门必备)

1、 Agent全面爆发的前夜&#xff1a;上下文成为核心变量 1.1 从Chatbot到Agent&#xff1a;能力形态的本质跃迁 在大语言模型&#xff08;LLM&#xff09;大规模落地到实际产品之前&#xff0c;Chatbot&#xff08;聊天机器人&#xff09;是最主流的应用形态。这种形态的工作逻…

基于双层优化模型的电动汽车日前-实时两阶段市场竞标策略研究报告

MATLAB代码&#xff1a;基于双层优化的电动汽车日前-实时两阶段市场竞标 关键词&#xff1a;日前-实时市场竞标 电动汽车 双层优化 编程语言&#xff1a;MATLAB平台 参考文献&#xff1a;店主自编参考文献&#xff0c;可联系我查看 内容简介&#xff1a;代码主要做的是电动汽…

【高录用、快见刊】第二届能源工程与污染治理国际学术会议(EEPC 2026)

第二届能源工程与污染治理国际学术会议&#xff08;EEPC 2026&#xff09;将于2026年3月13-15日在大连召开&#xff0c;这是一个集中探讨全球能源工程与污染治理领域创新和挑战的国际学术平台。旨在汇集全球领域内的学者、研究人员、政策制定者以及业界领导者&#xff0c;共同探…

干货_常用提权辅助工具推荐

干货 | 常用提权辅助工具推荐 一、使用Windows-Exploit-Suggester解析systeminfo 1、简介 Windows-Exploit-Suggester是受Linux_Exploit_Suggester的启发而开发的一款提权辅助工具&#xff0c;用python开发而成&#xff0c;通过比对systeminfo生成的文件&#xff0c;从而发现…

外卖大军:“一口热饭”的需求引发的一系列多线程社会问题与困局

在现代都市的日常图景中&#xff0c;一个再平常不过的动作——点开手机&#xff0c;为一份即将送达的“热饭”支付费用——已成为数亿人的习惯。这份对即时温饱的朴素追求&#xff0c;却如同投入平静湖面的一颗石子&#xff0c;激荡起一连串深远而复杂的涟漪&#xff0c;最终汇…