如何使用 Sed 命令替换文件中的字符串

2023-11-07

您是否遇到过需要替换许多文件中的单词或句子的情况?您可以复制并粘贴它,或者也许有一个现有的脚本可以完成这项工作。但是,如果您只需要在其他地方用另一个单词或句子替换它呢?您可以使用 find,但这太通用了,需要为此任务编写脚本。如果您甚至不知道必须查找和替换哪个单词或句子怎么办?那么使用 sed 怎么样?如果您不熟悉 Unix 命令行,sed 是一个流编辑器。它是一个简单的文本编辑器,可以从标准输入中读取数据,并在读取时对流执行编辑操作。它通常用于脚本中的搜索和替换功能。

在本文中,我们将向您展示如何使用 sed 执行搜索和替换文件中的文本的一些示例。

查找并替换文件中的字符串

如果您只需要执行简单的搜索和替换,可以使用以下语法:


sed -i 's/string_to_find/string_to_replace/' file1 file2 fileN 
  

Here:

  • -i:该标志向 sed 指示您的输入文件应该是命令后指定的文件之一。
  • 要查找的字符串:这是您要在文件中搜索的字符串。
  • 要替换的字符串:这是您要替换文件中的字符串what_to_find 的字符串。
  • 文件1 文件2 文件N:这是 sed 将搜索和替换的文件列表。

以下命令将搜索所有字符串“Hello”welcome.txt文件。然后在同一文件中将其替换为新字符串“Howdy”。

sed -i 's/Hello/Howdy/g' welcome.txt 

您还可以在进行更改之前创建原始文件的备份-i接下来是一些扩展。例如:

sed -i.backup 's/Hello/Howdy/g' welcome.txt 

这将在当前目录中创建一个包含原始文件内容的文件welcome.txt.backup。

递归替换多个文件中的文本

以下命令有助于一次替换目录 /opt/docs 中多个文件中的字符串。这里find会定位到定义目录下的所有文件,并一一执行sed命令。

find /opt/docs/ -type f -exec sed -i 's/Hello/Howdy/g' {} ; 

替换文本而不影响原始文件

如果您不想更改原始文件并使用更改后的字符串创建新文件,请使用以下命令。

sed 's/Hello/Howdy/g' welcome.txt > welcome_2.txt 

该命令将创建一个新文件welcome_2.txt带有修改后的文本。原始文件保持不变。

结论

sed 命令是一个功能强大的工具,可用于编辑文件中的文本。当您需要在许多文件中查找和替换字符串时,它非常有用。您可以使用 find,但这太通用并且需要编写脚本。如果您甚至不知道必须查找和替换哪个单词或句子怎么办?使用 sed 是一个更好的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Sed 命令替换文件中的字符串 的相关文章

  • 使用 sed 替换 shell 脚本中的特殊字符

    我正在尝试编写一个 shell 脚本 它将替换我使用 sed 选择的任何字符 字符串 我的第一次尝试除了特殊字符之外都有效 我一直在尝试使用 sed 来修复特殊字符 以便它们也能被搜索或替换 我决定简化脚本以进行测试 只处理一个有问题的角色
  • 查找列中字段的平均值[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个这样的记录 1 11 11 T A 0 0 A 1 B 2 C 3 D 4 有 8 列 每列由制表符空格分隔 我需要的输出是这
  • sed - 打印仅以元音开头的单词

    如何反转此 sed 以仅打印以元音开头的单词 我试过放进去 在下面的 sed 命令中 但它不起作用 我认为这只会颠倒上面的规则 echo Always take a Big Apple sed r s b AEIOUaeiou w g 你需
  • 在 awk 中按特定顺序打印文件

    我正在关注这个链接https stackoverflow com a 54599800 10220825 https stackoverflow com a 54599800 10220825 file txt Iteration 1 RA
  • 删除一行中逗号之前的所有内容

    我有多个文件 其中包含以下行 foo 123456 bar 654321 baz 098765 我想删除每行逗号之前 包括 的所有内容 输出将是 123456 654321 098765 在另一个问题上看到类似的内容后 我尝试使用以下内容
  • 如果字段重复则删除行

    如果第一个字段重复 则寻找 awk 或 sed 单行代码以从输出中删除行 我见过的删除重复行的示例是 awk a 0 a 0 尝试使用它作为基础 但没有运气 我认为将 0 更改为 1 可以解决问题 但似乎不起作用 awk if a 1 0
  • sed:更改 .yml 文件中环境属性的值

    我有一个 yml 文件 用于配置应用程序的环境属性 如下所示 env1 prop1 value1 prop2 value2 propn valuen env2 prop1 value1 prop2 value2 prop3 value3 p
  • sed 在文本文件中换行?

    我是 Sed 的新手 我有一堆 ASCII 文件 其中包含如下所示的数据 Test Version 2 6 3 Model Manufacturer HR21 100 Test Version 2 6 3 Model Manufacture
  • 我可以使用 sed 命令将多个空行替换为一个空行吗?

    我知道 SO 中也有类似的问题如何在 bash 中用单个空行替换多个空行 https stackoverflow com questions 922449 how can i replace mutliple empty lines wit
  • 使用Sed查找并替换json字段

    我有一组 json 文件 其中在最后一个键值对之后有需要替换的逗号 RepetitionTime 0 72 TaskName WM Manufacturer Siemens ManufacturerModelName Skyra Magne
  • 如何在正则表达式之后打印单词但不打印相似的单词?

    我想要一个 awk 或 sed 命令来打印正则表达式之后的单词 我想找到一个单词后面的单词 但不是看起来相似的单词 该文件如下所示 somethingsomething X Windows Icon xournal somethingsom
  • 仅当重复行与模式匹配时才删除它们

    这个问题 https stackoverflow com questions 1444406 how can i delete duplicate lines in a file in unix有一个很好的答案说你可以使用awk seen
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • 用于计算数据文件中数字列表的平均值的脚本

    文件data txt包含以下内容 1 00 1 23 54 4 213 2 3 4 脚本的输出应该是 ave 54 646 一些简单的脚本是首选 这是一种方法 awk s 1 END print ave s NR RS file ave 5
  • 通过 bash 从文件中检索电子邮件主题

    我有一个 shell 脚本 它将文件从服务器邮件文件夹下载到 NAS 设备 以便客户端拥有本地备份的副本 文件保存为11469448248 H15587P19346 smtp x14 eu 2 S文件 我已将扩展名更改为标准 eml 格式
  • 忽略 sed 查找和替换命令中的斜杠

    我正在尝试在终端中使用 sed 进行查找和替换 在 apache 配置文件中 我尝试替换 DocumentRoot var www with DocumentRoot var www mysite com public html 从命令行
  • 如何使用 bash 中提供的工具生成一系列非周末日期?

    我想生成一个文件列表 其中名称包含 filename date 例如file 20111101 file 20120703 开始November 1 2011直到今天 应该不包括周末 Thanks 2011年试试这个 for y in 20
  • 使用 sed 将每行多个字段拆分为单独的行,保留行前缀

    上周五我遇到了一个问题 要将文本转换为另一种格式 在那台机器上 只有 gnu sed 可用 没有 awk 奇怪 我知道 而且我对 perl 一无所知 所以我正在寻找一个仅限 sed 的解决方案 文件内容是 a yao com sina co
  • 使用 sed 使用另一个文件的内容替换文件内的文本块

    我希望用另一个文件的内容替换标记之间的文本块 我遇到了这个解决方案 但它只适用于一行 sed n foo p a N bar ba s n REPLACEMENT n p file line 1 line 2 foo REPLACEMENT

随机推荐

  • 【GPIO】通用输入/输出工作模式原理

    1 GPIO基本结构 保护二极管 IO引脚上下两边两个二极管用于防止引脚外部过高 过低的电压输入 当引脚电压高于VDD时 上方的二极管导通 当引脚电压低于VSS时 下方的二极管导通 防止不正常电压引入芯片导致芯片烧毁 P MOS管和N MO
  • C/C++什么是内存泄露,内存泄露如何避免?

    C C 什么是内存泄露 内存泄露如何避免 1 内存溢出 2 内存泄漏 3 造成内存泄露常见的三种情况 3 1 指针重新赋值 3 2 错误的内存释放 3 3 返回值的不正确处理 4 如何避免内存泄露 5 内存泄露检测工具valgrind 1
  • abstract方法必须在abstract类中 这句话是对的还是错的?

    对 参考文章 https zhidao baidu com question 435526297 html interface中所有的方法都是抽象的 抽象类中部分方法是抽象的 实现interface接口的类必须重写全部方法 而继承抽象类的子
  • UE4(虚幻4)基础:编辑样条曲线实现道路

    一 新建地形 在模式中点击山形状的图标会出现以下界面 下面那几个你可以自己随便调节一下看看都是干什么 都是可视化的东西 很简单 至于这个材质球 在你创建项目的时候如果是默认的 那么系统会默认给你添加新手包 找到StartContent这个文
  • java的动态代理过程

    重点知识回顾 反射机制 在运行期间 对于任意类都能知道它的所有属性和方法 对于任意对象都能调用它的属性和方法 静态代理 通过编写代码完成增强效果 即是通过我们自己编写相关的代码实现增强效果 java的动态代理过程 我们都知道java动态代理
  • 缺失值填充4——使用线性模型(岭回归、Lasso回归、ElasticNet回归)填充序列缺失值

    原始的问题可能是 一个X 包含x1 x2 缺失x x3 预测 gt y 模型填充缺失值 使用 x1 x2 x3 y 预测 gt 缺失x 算法思路 Lasso回归 在线性回归结尾加入绝对值和的正则化方法 L1正则 岭回归 在线性回归结尾加入平
  • 7.集成测试

    一 集成测试介绍 测试 单元测试 集成测试 系统测试 软件开发 需求 高层设计 底层设计 代码 灰盒测试 定义 集成测试 集成测试 综合测试 联合测试 整体测试测试 实验测试 集成测试是软件测试的阶段 在该阶段中 各个软件模块被组合在一起并
  • MD5算法是什么?

    MD5 消息摘要算法 5 是一种广泛使用的加密哈希函数 可生成 128 位 16 字节 哈希值 它由 Ronald Rivest 于 1991 年设计 用于从可变长度输入生成固定大小的输出 该输出代表输入的指纹 为什么 MD5 很重要 传输
  • 如何使用 Homebrew 在 macOS 上安装 NVM

    Node Version Manager NVM 是一种广泛使用的工具 允许开发人员在单台计算机上管理 Node js 的多个版本 它的重要性怎么强调都不为过 因为 Node js 应用程序有时可能是特定于版本的 并且不同的项目可能需要不同
  • 在 Shell 脚本中高效地逐行读取文件

    逐行读取文件是许多 shell 脚本中的常见任务 因为它允许您单独处理文件的每一行并根据每一行的内容执行操作 在 Linux shell 脚本中逐行读取文件的方法有多种 但有些方法比其他方法更有效 在本文中 我们将探讨在 Linux she
  • Bash 变量简介

    在上一篇文章中 我们讨论了本地 Bash 变量和全局 Bash 变量之间的差异 您可以在此处阅读 基于这种理解 今天我们将更深入地了解 Bash 脚本世界 重点关注 Bash 变量 我们将探讨定义变量的规则 可以对它们执行的操作以及它们如何
  • 如何在 Debian 11 上安装 Wine 8.0

    Winehq团队于2023年1月24日发布了最新稳定版本8 0 其源代码可以从其官方网站下载 您还可以使用包管理器来安装 wine Wine 是 Windows API 的开源实现 并且始终是免费软件 大约一半的源代码是由其志愿者编写的 其
  • Top 命令输出解释:初学者简介

    The top 命令是一个 Linux 实用程序 用于显示有关系统上正在运行的进程的实时信息 它提供系统当前状态的摘要 包括 CPU 内存和交换使用情况 以及正在运行的进程及其资源利用率的列表 使用 top 命令很简单 只需输入 top 在
  • 如何在 PHP 中验证日期字符串:探索多个选项

    日期验证是许多 Web 应用程序的重要组成部分 因为它确保用户输入正确且有意义的日期 PHP 是一种流行的服务器端脚本语言 它提供了多种函数来帮助开发人员轻松验证日期字符串 在本文中 我们将讨论在 PHP 中验证日期字符串的不同方法 包括内
  • 在 PHP 中处理时区的高级技术

    处理时区是在基于 Web 的应用程序中处理日期和时间的一个重要方面 在 PHP 中 设置默认时区是关键的第一步 但是有几种处理时区的高级技术可以帮助您构建更强大和更准确的应用程序 在本文中 我们将讨论在 PHP 中处理时区的高级技术 在时区
  • MySQL 使用 LIKE 区分大小写搜索

    LIKE语句用于在MySQL中搜索包含部分字符串的记录 默认情况下 带有 LIKE 的查询会匹配不区分大小写的记录 意味着查询将匹配小写或大写的两条记录 例如 搜索颜色表中名称以 Gr 开头的所有记录 mysql gt SELECT nam
  • 如何在 Linux 上安装 Apache OFBiz

    阿帕奇 OFBiz Apache Open For Business 项目 是一个开源 ERP CRM 系统 来自阿帕奇基金会可靠 安全和可扩展的企业解决方案的起点 它提供完整的会计 分类帐 库存管理 CRM 和项目管理系统 此外 OFBi
  • 使用 Pg_dump 备份和恢复 PostgreSQL 数据库

    PostgreSQL 是一种流行的开源关系数据库管理系统 用于 Web 应用程序 商业智能和其他数据密集型应用程序 管理 PostgreSQL 数据库的一个关键方面是通过制定备份和恢复策略来确保数据保护 在本文中 我们将提供有关如何备份和恢
  • Bash 脚本中出现错误时退出的综合指南

    Bash 脚本对于系统管理员 程序员甚至想要自动执行重复任务的普通用户来说都是必不可少的工具 然而 当脚本由于错误或不可预见的情况而未按预期运行时 可能会成为令人沮丧的根源 正确的错误处理对于维护脚本的可靠性 一致性和性能至关重要 本文将提
  • 如何使用 Sed 命令替换文件中的字符串

    您是否遇到过需要替换许多文件中的单词或句子的情况 您可以复制并粘贴它 或者也许有一个现有的脚本可以完成这项工作 但是 如果您只需要在其他地方用另一个单词或句子替换它呢 您可以使用 find 但这太通用了 需要为此任务编写脚本 如果您甚至不知