sed 功能详解

news2024/9/30 11:40:53

介绍sed

sed是一种流编辑器,它一次处理一行内容,把当前处理的行存储在临时缓冲区中(buffer),称为"模式空间",接着sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,执行下一个循环。会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。除非你使用重定向输出或-i.

sed 不会修改文件,因为它处理的数据都是,缓冲区里面的

sed常用的参数和功能

-n 只输出匹配到的内容
-e 可以写多个匹配的模式,每个模式之间用;分开
-r 支持扩展的正则表达式
-f 将sed的动作写入一个文件中
-i 直接修改原文件的内容

flag 有四种标记
1.数值 表示替换到第几处
2.g 替换所有的匹配
3.p 原先行的内容打印出来
4.d 删除指定的内容
5.c 匹配到的行,替换指定的内容
6.! 匹配内容取反
7.w 替换的内容保存在文件中

测试实验

测试文件的内容:

-n 测试输出匹配的内容:
sed -n '/abc/p' test.txt
-e 测试输出匹配的内容:
sed -n -e '/abc/p' -e '/ABC/p' test.txt
s替换匹配内容
sed 's/abc/BCD/' test.txt 若flag无g则替换第一行第一处匹配的abc替换为BCD
sed 's/abc/BCD/g' test.txt 一行所有的abc都替换为BCD
sed 's/abc/BCD/2' test.txt 一行中第二次出现abc时进行替换
sed '/6$/i\I am a line insert!' test.txt ==在6为结尾的行前插入内容

实例1:

修改/etc/selinux/config 中的SELINUX的值

sed -ri 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config

输出结果:

实例2:

在修改/etc/my.conf 中某行增加内容

sed '/^\[mysqld\]/a\user=root\n passwd=123456' /etc/my.conf

实例3:

用@来代替分隔符

sed -r 's@(socket=).*@\1/tmp/mysql.sok@' /etc/my.conf

实例4:

SHELL脚本内嵌入二进制可执行程序,

sed "1,/^# END OF THE SCRIPT/d" "$0" > ${prog_name}

# 在SHELL脚本中可以嵌入二进制可执行程序
# 思路:将二进制可执行程序添加到SHELL末尾,运行时再将该二进制可执行程序导出,然后执行导出的二进制程序

# ---------------------------------- Example
# 先准备SHELL脚本
[root@localhost ~]# cat test.sh
#!/bin/sh

prog_name="./test.exe"

sed "1,/^# END OF THE SCRIPT/d" "$0" > ${prog_name}   # 导出二进制程序,这个步骤很重要 ...
chmod u+x ${prog_name}
${prog_name} && rm -f ${prog_name}

# WARNING: Do not modify the following !!!
exit 0
# END OF THE SCRIPT ----------> 这是shell 脚本当前的最后一行

# ------------------------------- 

# 将二进制可执行程序 /bin/date 嵌入到该脚本中
[root@localhost ~]# cat /bin/date >> test.sh 

# 执行脚本 test.sh, 验证是否输出与 date 命令一致

[root@localhost ~]# ./test.sh
2012年 10月 24日 星期三 16:41:20 CST

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

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

相关文章

面向Elasticsearch的高性能应用网关INFINI Gateway的介绍

1.微服务的API网关介绍网关的含义很多,应用范围也很广,不同的领域理解也不一样,站在分布式领域基于微服务的架构风格中,API网关其实就是一个微服务系统的统一入口。往往微服务是指由多个应用组成的一个个独立的服务系统&#xff0…

【C/C++】类型限定符extern、const、Volatile、register

1、extern: 声明一个变量,extern声明的变量没有建立存储空间。 extern int a ; //变量在定义的时候创建存储空间。 ①当我们在编译器中试图运行以下代码,系统会报错。 错误原因是“无法解析外部符号_a”.系统认为变量a是没有开辟内存空间的…

【3】MyBatis+Spring+SpringMVC+SSM整合一套通关

三、SpringMVC 1、SpringMVC简介 1.1、什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体…

网络应用之静态Web服务器-多任务版

静态Web服务器-多任务版学习目标能够写出多线程版的多任务web服务器程序1. 静态Web服务器的问题目前的Web服务器,不能支持多用户同时访问,只能一个一个的处理客户端的请求,那么如何开发多任务版的web服务器同时处理 多个客户端的请求?可以使…

ROS进行深度相机的标定

前言 自己使用标定板对深度相机进行标定。 参考:http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration 一、准备标定板 在下面的网站中可下载棋盘格标定板,可用A4纸打印下来。 http://wiki.ros.org/camera_calibration/Tutorials/…

Spring Boot整合Kaptcha实现验证码功能

目录一、前言1.Kaptcha 简介2.Kaptcha 详细配置表二、实现1.整合kaptcha,创建kaptcha的工具类1.1 添加依赖1.2 创建KaptchaConfig工具类2 编写接口,在接口中使用 kaptcha 工具类来生成验证码图片(验证码信息)并返回3 登录时从sess…

阻塞队列BlockingQueue

一、概念阻塞队列:从名字可以看出,他也是队列的一种,那么他肯定是一个先进先出(FIFO)的数据结构。与普通队列不同的是,它支持两个附加操作,即阻塞添加和阻塞删除方法。如上图,线程1往…

2023年值得参加的数学建模竞赛介绍

数学建模竞赛:一次参与,终身受益 博主7年数学建模竞赛经验,历史获奖率百分之百。团队成员都是拿过全国一等奖的硕博,有需要数模竞赛帮助的可以私信我。 有同学咨询还有那些数学建模比赛可以参加,哪些含金量比较高&…

Qt图片定时滚动播放器+透明过渡动画

目录参考结构PicturePlay.promain.cppmyqlabel.h 自定义QLabelmyqlabel.cpp自定义QLabelpictureplay.hpictureplay.cpppictureplay.uistyle.qss效果源码参考 Qt图片浏览器 QT制作一个图片播放器 Qt中自适应的labelpixmap充满窗口后,无法缩小只能放大 Qt的动画类修改…

3 决策树及Python实现

1 主要思想 1.1 数据 1.2 训练和使用模型 训练:建立模型(树) 测试:使用模型(树) Weka演示ID3(终端用户模式) 双击weka.jar选择Explorer载入weather.arff选择trees–>ID3构建树…

简单易懂又非常牛逼的Spring源码解析,推断构造与bean的实例化

简单易懂又非常牛逼的Spring源码解析,推断构造与bean的实例化原理解析实例化bean的入口工厂方法实例化推断构造初次筛选二次筛选bean的实例化代码走读实例化bean的入口createBeanInstance方法内部的流程推断构造初次筛选二次筛选bean的实例化总结往期文章&#xff1…

十六、vue3.0之富文本编辑器的选择

在工作过程中我们会遇到很多的时候会使用到富文本编辑器,市场上流行的也是各种各样的,那么究竟如何选择呢,今天就给大家讲讲有哪一些,方便大家的选择。 一、TinyMCE TinyMCE 是富文本编辑器领域的头部玩家之一,主流富文本编辑器,功能非常全,你需要的大多数功能它都支持…

深力科电子-MachXO3系列 LCMXO3LF-1300C-5BG256C 控制和桥接FPGA器件

深力科电子-lattice莱迪斯MachXO3系列 LCMXO3LF-1300C-5BG256C 控制和桥接FPGA器件 ,FPGA 现场可编程逻辑器件,小尺寸,高性能!在工业领域,它可以用于网络控制器,PLC,网络边缘计算,机器视觉和工业机器人&…

万字解析 Linux 中 CPU 利用率是如何算出来的?

在线上服务器观察线上服务运行状态的时候,绝大多数人都是喜欢先用 top 命令看看当前系统的整体 cpu 利用率。例如,随手拿来的一台机器,top 命令显示的利用率信息如下 这个输出结果说简单也简单,说复杂也不是那么容易就能全部搞明白…

【java web篇】使用JDBC操作数据库

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

学习Java前,应该了解的这些知识(新手必学)

Java语言广泛应用于编写web应用程序、移动开发、安卓开发等,市场上对Java人才需求量很大,有数据显示,Java工程师的薪资待遇随着人才市场的需求逐步递增,由此可见,Java人才需求量呈现持续上升趋势,供不应求。…

LevelDB架构介绍以及读、写和压缩流程

LevelDB 基本介绍 是一个key/value存储,key值根据用户指定的comparator排序。 特性 keys 和 values 是任意的字节数组。数据按 key 值排序存储。调用者可以提供一个自定义的比较函数来重写排序顺序。提供基本的 Put(key,value),Get(key),…

企业电子招标采购源码之电子招标投标全流程!

随着各级政府部门的大力推进,以及国内互联网的建设,电子招投标已经逐渐成为国内主流的招标投标方式,但是依然有很多人对电子招投标的流程不够了解,在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同&#xff0…

13-mvc框架原理与实现方式

1、mvc原理 # mvc 与框架## 1.mvc 是什么1. m:model,模型(即数据来源),主要是针对数据库操作 2. v:view,视图,html 页面。视图由一个一个模板构成(模板是视图的一个具体展现或载体,视图是模板的一个抽象) 3. c:controller,控制器,用于mv之间的数据交互## 2.最简单的 mvc 就是一…

Java+Swing+Mysql实现超市管理系统

一、系统介绍1.开发环境操作系统:Win10开发工具 :IDEA2018JDK版本:jdk1.8数据库:Mysql8.02.技术选型JavaSwingMysql3.功能模块4.系统功能1.系统登录登出管理员可以登录、退出系统2.商品信息管理管理员可以对商品信息进行查询、添加…