linux中sed命令详解

news2024/10/9 11:18:39

sed 是 Linux 中的一个流编辑器(stream editor),主要用于处理文本的编辑和转换。它可以从文件或标准输入读取内容,然后根据指定的模式和指令对数据进行处理,最后输出修改后的结果。它的强大之处在于可以通过脚本或命令行进行非交互式的文本处理。

sed 的基本语法

sed [选项] '脚本' 文件

  • 脚本:描述如何编辑文本的操作。
  • 文件:需要处理的文本文件。
  • 选项:控制 sed 的行为,常用选项如下。

常用选项

  • -e:允许使用多个编辑脚本。
  • -i:直接修改文件(原地编辑)。
  • -n:静默模式,不会自动打印输出,通常与 p 命令结合使用。
  • -r:使用扩展正则表达式。
  • -f:从脚本文件读取 sed 命令。

常见命令

  • p:打印匹配的行。
  • d:删除匹配的行。
  • s:替换模式(substitute)。
  • a:在当前行之后追加文本。
  • i:在当前行之前插入文本。
  • c:用新的文本替换整行。

示例详解

1. 基本替换
sed 's/old/new/' file.txt
  • s/old/new/:将每行中第一个匹配 old 的字符串替换为 new
  • 如果需要替换每行中所有匹配的字符串,可以使用 g 选项:
sed 's/old/new/g' file.txt
2. 只修改特定行
sed '2s/old/new/' file.txt
  • 只对文件的第二行进行替换操作。
3. 删除行
sed '2d' file.txt
  • 删除第二行。
sed '2,5d' file.txt
  • 删除第 2 到第 5 行。
4. 插入和追加
sed '2a\This is new line' file.txt
  • 在第二行后插入文本 This is new line
sed '2i\This is new line' file.txt
  • 在第二行前插入文本 This is new line
5. 多脚本处理

使用 -e 选项可以进行多个命令的组合:

sed -e 's/old/new/' -e '2d' file.txt
  • 首先将所有 old 替换为 new,然后删除第二行。
6. 扩展正则表达式

默认情况下,sed 使用基本正则表达式。要使用扩展正则表达式,可以加上 -r 选项:

sed -r 's/(foo|bar)/new/' file.txt
  • foobar 替换为 new
7. 原地修改文件
sed -i 's/old/new/g' file.txt
  • 直接修改 file.txt,不再输出到标准输出。
8. 打印匹配行

结合 -np 命令,只输出匹配的行:

sed -n '/pattern/p' file.txt
  • 只打印匹配 pattern 的行。

高级用法

1. 使用 & 引用匹配部分

在替换操作中,& 代表匹配的部分:

sed 's/[0-9]\+/[&]/g' file.txt
  • 将文件中所有的数字用方括号包裹起来。
2. 使用标记捕获组
sed 's/\(old\)/new\1/' file.txt
  • 将匹配的 old 替换为 newold\1 表示引用第一个捕获组。
3. 替换多行文本
sed ':a;N;$!ba;s/\n/ /g' file.txt
  • 将整个文件的所有换行符替换为空格,从而将整个文件内容变成一行。

总结

sed 是处理文本的强大工具,适用于各种文本处理任务。通过合理利用正则表达式、脚本和命令选项,可以实现从简单的查找替换到复杂的文本编辑任务。

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

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

相关文章

Java中String类的常见操作Api

目录 String类的常见操作 1).int indexOf (char 字符) 2).int lastIndexOf(char 字符) 3).int indexOf(String 字符串) 4).int lastIndexOf(String 字符串) 5).char charAt(int 索引) 6).Boolean endWith(String 字符串) 7).int length() 8).boolean equals(T 比较对象) 9).b…

【2024】作为前端开发,必须掌握的 Vue3 的 5 个组合式 API 方法

引言:2024 你还不知道 Vue3 的 defineProps、defineEmits、defineExpose、defineOptions 和 defineSlots 吗?这几个 Vue3 组合式 API 方法不仅开发常用(涉及组件通信、组件复用等),在面试中也是不可或缺的一部分&#…

SpringBoot实现电子文件签字+合同系统!

一、前言 二、项目源码及部署 1、项目结构及使用框架 2、项目下载及部署 三、功能展示 一、前言 今天公司领导提出一个功能,说实现一个文件的签字+盖章功能,然后自己进行了简单的学习,对文档进行数字签名与签署纸质文档的原因大致相同,数字签名通过使用计算机加密来验证 (…

LabVIEW提高开发效率技巧----阻塞时钟

在LabVIEW开发中,阻塞时钟(Blocking Timed Loops)是一种常见且强大的技术,尤其适用于时间关键的应用。在这些应用中,精确控制循环的执行频率是关键任务。阻塞时钟通过等待循环的执行完成后再进入下一次迭代&#xff0c…

鸿蒙 Next 实战: 烟花模拟器

前言 通过上一篇文章可以看出,要在鸿蒙应用中实现特别炫的特效还是比较复杂。动画固然重要,但如果在赶工期的情况下,大家都会优先业务,那有没有简单快速的方法呢? 有的,也用像 Android 和 iOS 里 WebView …

.Net Core 接口或网站发布到IIS

将.Net Core 接口或网站发布到IIS上,需要遵循一系列步骤来确保正确配置和部署。下面将以.NET Core 3.1的api接口发布示范: 一、环境准备 安装.NET Core 3.1 SDK和运行时: 在服务器上安装.NET Core 3.1 SDK(如果需要在服务器上编译…

宝兰德亮相2024国际信息通信展:数智创新,信创力量!

9月25日-27日,2024中国国际信息通信展览会在北京国家会议中心隆重召开。本届展会以“推动数实深度融合,共筑新质生产力”为主题,全面展示信息通信业发展最新成果。作为国内领先的基础软件供应商,宝兰德再度闪耀会场,在…

[ROS】rqt工具箱

作用: 可以方便的实现 ROS 可视化调试,并且在同一窗口中打开多个部件,提高开发效率,优化用户体验。 组成: rqt工具箱组成有三大部分 rqt 核心实现,开发人员无需关注 rqt_common_plugins rqt…

Gated Transformer Networks for Multivariate Time Series Classification

博客贡献人 徐宁 作者 Minghao Liu , Shengqi Ren , Siyuan Ma , Jiahui Jiao , Yizhou Chen , Zhiguang Wang(Facebook AI) and Wei Song∗ 标签 多元时间序列分类,Transformer,门控 摘要 用于时间序列分类的深度学习模型(主要是卷积网…

GO网络编程(七):海量用户通信系统5:分层架构

P323开始(尚硅谷GO教程)老韩又改目录结构了,没办法,和之前一样,先说下目录结构,再给代码,部分代码在之前讲过,还有知识的话由于本人近期很忙,所以这些就不多赘述了&#…

【源码+文档】基于SpringBoot+Vue的健康宝个人健康管理平台

一、项目技术架构: 本项目是一款基于SpringBootVue的个人健康信息管理系统。后端采用SpringBoot架构,前端采用VueElementUI实现页面的快速开发,并使用关系型数据库MySQL存储系统运行数据。本系统分为两种角色,分别是系统管理员&a…

DS入门引言(0)

文章目录 前言一、什么是数据结构?二、什么是算法?三、数据结构与算法的重要性?四、如何学习它们?总结 前言 是的,我又开了一个专栏,数据结构(Data Structure),其实数据结…

【人工智能】AI人工智能的重要组成部分,深入解析CNN与RNN两种神经网络的异同与应用场景和区别

文章目录 一、卷积神经网络(CNN)详解1. 特征与结构CNN的基本结构 2. 应用场景3. 代码示例 二、循环神经网络(RNN)详解1. 网络结构与特点RNN的基本结构 2. 应用场景3. 代码示例 三、CNN与RNN的异同点1. 相同点2. 不同点 四、CNN与R…

javascript 阿里云,如何返回某个目录的文件

一、效果图 二、实际代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>阿里云 OSS 文件列表&…

合约测试用例详解

合约测试的综合案例 第一部分 压力测试(使用caliper工具测试) 1.环境要求 配置基本环境 部署Caliper的计算机需要有外网权限;操作系统版本需要满足以下要求:Ubuntu >= 16.04、CentOS >= 7或MacOS >= 10.14;部署Caliper的计算机需要安装有以下软件:python 2.7…

PMP--冲刺题--解题--91-100

文章目录 11.风险管理--4.实施定量风险分析--题干场景中提到了“专家”&#xff0c;同时即将开始“量化风险”&#xff0c;因此对应的就是“定量风险分析”中的“专家判断”技术。项目经理应先征求各位专家们的意见&#xff0c;以获取最佳的量化风险实施方案。谋定而后动91、 […

wordpress发邮件SMTP服务器配置步骤指南?

wordpress发邮件功能如何优化&#xff1f;怎么用wordpress发信&#xff1f; 由于WordPress默认的邮件发送功能可能不够稳定&#xff0c;配置SMTP服务器成为了许多网站管理员的选择。AokSend将详细介绍如何在WordPress中配置SMTP服务器&#xff0c;以确保邮件能够顺利发送。 w…

Linux-磁盘优化的几个思路

优化前先看看性能指标 I/O 基准测试 fio&#xff08;Flexible I/O Tester&#xff09;正是最常用的文件系统和磁盘 I/O 性能基准测试工具。这类工具非常用&#xff0c;了解即可 应用程序优化 应用程序处于整个 I/O 栈的最上端&#xff0c;它可以通过系统调用&#xff0c;来调…

可持续边缘计算:挑战与未来方向

论文标题&#xff1a;Sustainable edge computing: Challenges and future directions 中文标题&#xff1a;可持续边缘计算&#xff1a;挑战与未来方向 作者信息&#xff1a; Patricia Arroba, Department of Electronic Engineering, Universidad Politcnica de Madrid, Ma…