【sed学习】sed -i和sed -i -e有什么区别

前言: 项目脚本有句sed -i '$aPRODUCT_PACKAGES += rtk_mdnsd' device.mk sed -i -e '$a/vendor/bin/ipv4lld u:object_r:ipv4lld_exec:s0' sepolicy/file_contexts不太清楚sed -i和sed -i -e有什么区别,学习一下

sed -ised -i -e 是用于编辑文件中匹配模式的命令。它们的区别在于 -e 选项。

  • sed -i:直接编辑文件,并将结果写回原始文件中。不需要指定脚本文件。
  • sed -i -e:与 -i 类似,但是需要使用 -e 选项后跟一个或多个编辑指令,这些指令可以是正则表达式、替换操作等,以对文件进行更复杂的编辑。

例如,以下命令使用 sed -i 将文件中所有的 “old” 替换为 “new”:

sed -i 's/old/new/g' file.txt

而以下命令使用 sed -i -e 在替换之前先打印行号,并将 “old” 替换为 “new”:

sed -i -e '/old/=' -e 's/old/new/g' file.txt

请注意,在使用 -i 选项时,请务必小心操作,因为它会直接修改原始文件。建议在进行修改之前备份文件。


当使用 sed -i 命令时,可以直接编辑文件并将结果写回原始文件中。以下是几个示例:

  1. 将文件中的所有 “apple” 替换为 “orange”:

    sed -i 's/apple/orange/g' file.txt
    
  2. 删除文件中包含特定字符串的行:

    sed -i '/pattern/d' file.txt
    

而在使用 sed -i -e 命令时,可以在编辑之前先执行一些额外的操作,例如打印行号或添加其他替换规则。以下是几个示例:

  1. 在替换之前先打印包含 “apple” 的行号:

    sed -i -e '/apple/=' -e 's/apple/orange/g' file.txt
    
  2. 替换文件中的多个模式:

    sed -i -e 's/apple/orange/g' -e 's/banana/mango/g' file.txt
    
  3. 添加一个新行到以 “Hello” 开头的行之后:

    sed -i -e '/^Hello/a\New line' file.txt
    

以上示例展示了 sed -ised -i -e 之间的一些区别,后者可用于更复杂的编辑任务。请根据具体需求选择适合的命令和选项。


学习使用 sed 命令可以帮助你在文本处理中实现强大的编辑和转换功能。以下是一些学习 sed 的步骤和资源推荐:

  1. 学习基本语法:sed 命令可以通过一系列的编辑指令来操作文本。了解基本的 sed 语法,包括模式匹配、替换、删除等操作是很重要的。你可以查阅 sed 的官方文档或在线教程来学习详细的语法规则。

  2. 实践例子:通过实际的例子来练习 sed 的用法,例如替换文件中的字符串、删除特定行、添加新行等。逐步尝试各种不同的 sed 命令并观察结果。

  3. 正则表达式:了解正则表达式对于掌握 sed 是至关重要的,因为 sed 使用正则表达式进行模式匹配。学习常见的正则表达式语法以及元字符的含义,可以帮助你更好地理解和应用 sed 命令。

  4. 阅读文档和教程:sed 的官方文档提供了详细的命令说明和示例。此外,还有许多在线教程和博客文章可供参考。阅读这些资源可以帮助你更深入地理解 sed 的功能和用法。

以下是一些学习 sed 的资源推荐:

  • GNU sed 官方文档:https://www.gnu.org/software/sed/manual/sed.html
  • Sed - An Introduction and Tutorial by Bruce Barnett: http://www.grymoire.com/Unix/Sed.html
  • The sed FAQ: https://www.catonmat.net/blog/sed-one-liners-explained-part-one/
  • sed Cheat Sheet: https://www.cheatography.com/davechild/cheat-sheets/sed/

通过不断练习和实践,你将逐渐掌握 sed 命令的使用技巧,并能够灵活应用它来处理文本数据。

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

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

相关文章

GB∕T 33171-2016 城市交通运行状况评价规范

免登陆免积分下载地址 标准号:GB/T 33171-2016 中文标准名称:城市交通运行状况评价规范 英文标准名称:Specification for urban traffic performance evaluation 中国标准分类号(CCS)R85 国际标准分类号(…

提前终止 Lambda forEach 的两种方法

在Java中,Lambda表达式提供了一种简便的方式来对集合进行迭代处理。然而,有时我们可能希望在特定条件下提前终止forEach的执行。这篇博客将介绍两种实现这一目标的方法。 方法一:使用异常 我们可以通过在Lambda表达式中抛出自定义异常的方式…

软件测试|SQL中的null值,该如何理解?

深入理解SQL中的Null值:处理缺失数据的重要概念 简介 Null值在SQL中是用于表示缺失或未知数据的特殊值。本文将深入探讨Null值的概念、处理方法和注意事项,以帮助读者更好地理解和处理SQL中的缺失数据。 在SQL数据库中,Null值是一种特殊的…

gitlab高级功能之Kubernetes Agent介绍

文章目录 1. 前置条件2. 简介3. GitLab Kubernetes Agent 的部署3.1 启用 Agent 服务端3.2 创建 Agent 配置和清单仓库 4. 安装agent4.1 连接k8s集群4.2 在集群中部署4.3 修改资源清淡,调整pod的副本数 5. 思考 1. 前置条件 gitlab 14.5 专业版k8s集群helm客户端工…

xadmin-plus

python之Xadmin-plus是什么? xadmin-plus: xadmin的django3.2版本支持。 Xadmin是一个非常优秀的Django Admin插件,可惜的是已经停止更新。Xadmin-plus对其进行了升级兼容。支持python3.10、Django3.2。 特性 Django Admin直接替换基于Twitter Boots…

uniapp存储讲解

在 Uni-app 中,你可以使用本地缓存来存储应用程序的数据。Uni-app 提供了两种本地缓存方式:uni.setStorageSync 和 uni.setStorage。其中,uni.setStorageSync 同步方式存储数据,适合小数据量的存储;而 uni.setStorage …

uniapp 跨页面传参的几种方式

当我们在开发Uni-app应用时,经常会遇到需要在不同页面之间传递参数的情况。为了实现跨页面传参,Uni-app提供了以下几种方式: URL传参:这是一种简单且常用的方式。在跳转页面时,可以通过在URL中添加参数来传递数据。目…

Docker 发布自定义镜像到公共仓库

Docker 发布自定义镜像到公共仓库 引言 Docker 是一种轻量级、便携式的容器化技术,可以使应用程序在不同环境中更加可移植。在本文中,我们将学习如何使用 Docker 从公共仓库拉取 Nginx 镜像,定制该镜像,添加自定义配置文件&…

【Redis端口】通过修改端口一个计算机上可以运行两个redis

一个计算机上可以运行多个Redis实例。每个Redis实例都会监听一个特定的端口,所以只要确保每个实例使用的端口不冲突,就可以在同一台计算机上运行多个Redis实例。例如,你可以配置一个Redis实例监听6379端口,另一个Redis实例监听638…

卫星时钟服务器、NTP时钟服务器、GPS北斗网络时钟系统

卫星时钟服务器、NTP时钟服务器、GPS北斗网络时钟系统 卫星时钟服务器、NTP时钟服务器、GPS北斗网络时钟系统 卫星时钟服务器、NTP时钟服务器、GPS北斗网络时钟系统 应用背景 根据人民银行第2012年第8期《金融业信息安全风险提示》建议大力推广采用能够接收GPS和北斗时钟源信号…

Linux内核--进程管理(六)内核进程管理几种CPU调度策略

目录 一、引言 二、CPU调度的直观想法 ------>2.1、FIFO ------>2.2、Priority ------>2.3、调度矛盾 三、各种CPU调度算法 ------>3.1、FCFS(First Come,First Served) ------>3.2、SJF(Short Job First,短作业优先) ------>3.3、RR算法(按时间片…

Java-变量类型-分类

1 需求 2 接口 3 示例 public class RunoobTest {// 成员变量private int instanceVar;// 静态变量private static int staticVar;public void method(int paramVar) {// 局部变量int localVar 10;// 使用变量instanceVar localVar;staticVar paramVar;System.out.println(…

Pytest——Fixture夹具的使用

一、什么是Fixture 在测试开展的过程中,会需要考虑到测试前的准备工作,以及测试后的释放操作行为。这些在Pytest中,会通过Fixture的方式来实现。如果说在运行pytest的测试用例的时候,需要调用一些数据来实现测试行为,…

kubectl常用命令(主题篇)

上一篇是按照操作把全局性的命令给整理出来,但是在实际的使用中,经常需要对某一个主题进行操作,因此这一篇按照对应的主题进行一系列操作。 集群 查看集群基本信息 kubectl cluster-info namespace 命名空间 查看 kubectl get namespace k…

web3d-three.js场景设计器-TransformControls模型控制器

场景设计器-TransformControls 控制器 该控制器可以指定模型进入可控制模式-如图有三种控制方式 translate --移动模式 rotate -- 旋转模式 scale -- 缩放模式 方便布局过程中快捷对模型进行摆放操作。 引入方式 import { TransformControls } from three/examples/jsm/…

C# visual studio COM创建及调用

1.visual studuio操作 1.1visual Studio创建类库项目ClassLibrary1。 1.1.1ClassLibrary1项目Class1.cs内容如下: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.T…

torch.where用法介绍

torch.where用法1介绍 torch.where(condition, x, y) → Tensor这个用法介绍直接搜就可以,不做介绍 torch.where用法2介绍(在yolov8中计算TP中出现) torch.where(condition) → Tensor返回的condition中为True的索引 直接举一个例子吧 condition torch.tensor(…

50N65-ASEMI高压N沟道MOS管50N65

编辑:ll 50N65-ASEMI高压N沟道MOS管50N65 型号:50N65 品牌:ASEMI 封装:TO-247 连续漏极电流(Id):50A 漏源电压(Vdss):650V 功率(Pd):388W 芯片个数:2 引脚数量:…

项目知识—SSM及之后02

1、resultMap写的Base内容必须保证select都使用上 2、VALUE单个 ,VALUES多个

Nginx部署笔记

记录Nginx部署Vue项目的流程,以及部署后前端出现问题的解决方案。 目录 一、安装nginx 二、部署流程 三、解决前端路由history模式刷新页面404的问题 四、Nginx解决前端项目打包缓存问题 五、后话 一、安装nginx http://nginx.org/ ,找到页面右下角的d…