sed命令详解

简介

        

sed(Stream EDitor),是一种流文件编辑器,其特点为:

1、非交互式。处理文件时,把当前处理的行存储在临时缓冲区(称为“模式空间”(Pattern Space))中,即它是基于模式匹配过滤及修改文本。

2、逐行处理,sed 命令在缓冲区中一次处理一行内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,直到文件末尾。

命令调用形式

sed [选项]   '[定址符]处理动作’文件  [input-file]

选项说明

-i:直接修改文件内容,而不是输出到终端。(该选项会直接修改目标文件内容,如果后面跟的动作是修改、替换、删除等操作指令,应谨慎使用)
 
-n:安静模式,屏蔽默认输出(全部文本),只有经过sed特殊处理的那一行才会被列出来。


-e :指定sed动作,可以由多个-e指定多个动作。
 
-r:启用扩展的正则表达式,若与其他选项一起使用,应作为首个选项
 
-f :直接将sed的动作写在一个文件内,-f filename则可以运行filename 内的sed动作;
 
--help:显示帮助。
 
--version:显示版本。
 

动作说明

[n1[,n2]] function 

其中[n1[,n2]]称为定址符,用来定义需要操作的文本,如指定处理的起、止行数,甚至是正则表达式。如果n1,n2不存在,则表示全部

fuction为编辑指令,可以为增删改查等指令

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何内容;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)行前插入数据;
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :替换,通常这个s的动作可以搭配正规表示法!例如 1,20s/old/new/g

示例

创建示例操作文件test.txt,内容如下:

显示2到4行的内容

        sed -n "2,4p" test.txt 

此处使用-n选项将结果输出到屏幕,如果使用-i选项会是什么结果?

显示第2行和第四行的内容

        sed -n "2p;4p" test.txt

注意,此处两命令的差别,一个使用的是逗号",",一个使用的是分号(表示的是2个动作)

在2到4行新增数据

对比一下输出结果可知,符合预期。注意,此处是没有直接把修改内容写入实际文件的,如果需要实际写入文件,使用-i选项参数

修改以xxx开头的文件内容

sed "/^li/s/ne/test/" test.txt

这里使用"/^li"表示命中所有以li字符串开头的行,然后通过s动作参数,使用test字符串替换ne字符串,注意:这里未添加"-i"选项没有把改变直接写入源文件

插入数据

sed "2i this is test insert" test.txt

注意:这里未添加"-i"选项没有把改变直接写入源文件

替换行内容

sed "/^li/c test" test.txt

这里的动作参数使用c表示直接整行替换,c动作参数后面的字符串"test"用于替换整行

注意:这里未添加"-i"选项没有把改变直接写入源文件

字符串替换

sed "/^li/s/line/change/" test.txt

这里使用"change"字符串替换"line"字符串,其中的符号"/"

实际案例分享

公司有海外业务部署在海外服务器上,而api调用客户端服务器部署在国内,不能直接调用,为此搭建了一个nginx反向代理服务,通过nginx调用到海外。而海外服务器使用的域名,ip会经常变动,为此,希望编写一个脚本,通过修改nginx的挂载配置文件,达到快速修改nginx反向负载的配置的目的:

nginx的配置内容如下:

脚本内容如下:

这样后续就只需要输出参数,调用脚本即可修改。不用再使用交互式的命令vi。甚至后续可以通过java程序堆外提供http服务直接调用该脚本完成,大大提升了效率

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE精炼宝库】多线程(3)线程安全 | synchronized

目录 一、线程安全 1.1 经典线程不安全案例: 1.2 线程安全的概念: 1.3 线程不安全的原因: 1.3.1 案例刨析: 1.3.2 线程不安全的名词解释: 1.3.3 Java 内存模型 (JMM): 1.3.4 解决线程不安全问题: 二…

成都爱尔眼科巫雷院长教你在家“自查”白内障

检查以下自己(或者父母、亲属)是否有发生以下情况: 视物模糊视物模糊是白内障的主要症状。2、眼前暗影白内障早期,有的患者眼前会出现阴影,这是因为晶状体发生浑浊。晶状体混浊在眼前固定位置,患者会“看到…

重生之 SpringBoot3 入门保姆级学习(02、打包部署)

重生之 SpringBoot3 入门保姆级学习(02、打包部署) 1.6 打包插件1.7 测试 jar 包1.8 application.properties 的相关配置 1.6 打包插件 官网链接 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-starte…

Android15 Beta更新速览

Android15 Beta更新速览 前台服务变更 前台服务使应用保持活动状态,以便它们可以执行关键且对用户可见的操作,通常以牺牲电池寿命为代价。在 Android 15 Beta 2 中,dataSync 和 mediaProcessing 前台服务类型现在具有约 6 小时的超时时间&a…

【Flowable 7】学习笔记 01 - 初始化数据库表创建流程(源码)

文章目录 前言版本说明配置1、引擎配置初始化2、SQL 执行创建表2.0、创建表概览(创建表数目:38)2.1、基础组件表创建(以 common 组件为例)2.2、changelog 组件表创建(基于 liquibase)2.3、Engin…

swiftui基础组件Image加载图片,以及记载gif动图示例

想要在swiftui中展示图片,可以使用Image这个组件,这个组件可以加载本地图片和网络图片,也可以调整图片大小等设置。先大概看一下Image的方法有哪些可以用。 常用的Image属性 1.调整图像尺寸: 使用 resizable() 方法使图像可调整…

ComfyUI工作流网站

https://openart.ai/home https://comfyworkflows.com/ https://civitai.com/

5G工厂长啥样

5G工厂是一种新型的工业互联网基础设施,利用5G为代表的新一代信息通信技术集成,打造新型工业互联网基础设施。在5G工厂中,自动化和智能化设备广泛使用,高度互联的工厂网络得以实现,远程监控和管理成为可能,…

220V转5V电源芯片,为您的微控制器、继电器和WiFi/蓝牙模块提供动力

220V转5V电源芯片,为您的微控制器、继电器和WiFi/蓝牙模块提供动力标题: 在我们生活的数字化世界中,电源芯片的重要性不容忽视。今天,我们要向您介绍一款适用于各种应用的电源芯片:220V转5V电源芯片。该芯片可从交流电…

Qt 项目(CMake)支持多国语言(2024/05)

目录 1.在工程手动创建languages文件夹2.修改CMakeLists.txt3.在qml上随便添加一下文字内容4.执行CMake 参考:Qt 项目(CMake)设置国际化支持 1.在工程手动创建languages文件夹 2.修改CMakeLists.txt set(TS_FILES"${CMAKE_SOURCE_DIR}/languages/aidi_zh_CN.ts"&qu…

享受当下,还是留待未来?一项fMRI与眼动追踪技术的联合研究

摘要 时间贴现(temporal discount)是指个体对奖励的估计会随着时间流逝而下降的心理现象。具体而言,当获得奖励的时间以日期(日期条件;例如,2023年6月8日)而不是延迟(延迟条件;例如,30天)呈现时,贴现率较低…

(二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2

层序遍历 10 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 综合代码&#xff1a; class Solution{public List<List<Integer>> resList new ArrayList<List<Integer>>();public List<List<…

springboot项目部署到linux服务器

springboot后端 修改前 修改后 重新生成war包 war上传到linux的tomcat的webapps下 其他环境配置和macOS大差不差 Tomcat安装使用与部署Web项目的三种方法_tomcat部署web项目-CSDN博客

如何高效测试防火墙的NAT64与ALG应用协议转换能力

在本文开始介绍如何去验证防火墙&#xff08;DUT&#xff09;支持NAT64 ALG应用协议转换能力之前&#xff0c;我们先要简单了解2个比较重要的知识点&#xff0c;即&#xff0c;NAT64和ALG这两个家伙到底是什么&#xff1f; 网络世界中的“翻译官” - NAT64技术 简而言之&…

紫光展锐前沿探索 | 满足未来6G多差异化应用场景的技术体系思考

在6G架构/系统设计中&#xff0c;紫光展锐提出了未来6G空口“一体多翼”的技术体系概念&#xff0c;即“Big-Lite Multi-RAT”。本文将详细对该技术体系展开介绍。 “一体多翼”技术体系通过 “体”&#xff08;Big RAT&#xff09;和“翼”&#xff08;Lite RAT&#xff09;的…

Visual Studio中调试信息格式参数:/Z7、/Zi、/ZI参数

一般的调试信息都保存在pdb文件中。 Z7参数表示这些调试信息保存到OBJ目标文件中&#xff0c;这样的好处是不需要单独分发PDB文件给下游。Zi就是把所有的调试信息都保存在pdb文件中&#xff0c;以缩小发布文件的大小。ZI和Zi类似&#xff0c;但是增加了热重载的能力&#xff1…

电火灶是燃气灶吗?这“火”又是怎么回事?

电火灶并非传统的燃气灶&#xff0c;它们在能源使用和工作原理上有着显著的区别。电火灶&#xff0c;又名电焰灶或电燃灶&#xff0c;属于新能源厨房灶具行列&#xff0c;它使用清洁的电能作为唯一能源&#xff0c;而不是依赖天然气或液化气等燃料。 具体来说&#xff0c;电火灶…

本地部署Whisper实现语言转文字

文章目录 本地部署Whisper实现语言转文字1.前置条件2.安装chocolatey3.安装ffmpeg4.安装whisper5.测试用例6.命令行用法7.本地硬件受限&#xff0c;借用hugging face资源进行转译 本地部署Whisper实现语言转文字 1.前置条件 环境windows10 64位 2.安装chocolatey 安装chocol…

力扣刷题--1528. 重新排列字符串【简单】

题目描述 给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s &#xff0c;其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新排列后的字符串。 示例 1&#xff1a; 输入&#xff1a;s “codeleet”, indices [4,5,6,7,0,2,1,3] 输…

创建你的RedTeam基础架构

随着RedTeaming行业的发展&#xff0c;我们对构建可靠环境的需求也越来越高。至关重要的是要拥有维护健壮的基础架构的能力&#xff0c;该基础架构要保证一旦出现问题就可以重新创建&#xff0c;更重要的是&#xff0c;我们需要确保环境在部署时不会出现问题。 今天&#xff0c…