shell脚本文本三剑客sed

news2024/11/19 7:35:13

shell脚本文本三剑客sed

  • 一.Sed编辑器
    • 1.1sed概述
    • 1.2sed工作流程
    • 1.3sed基本法
    • 1.4sed常用选项
    • 1.5sed命令的常用操作
  • 二.sed命令使用
    • 2.1打印内容
    • 2.2删除内容
    • 示例5:先备份内容在删除
    • 2.3插入内容
    • 2.4取反
    • 2.5搜索替代
    • 2.6分组调用

一.Sed编辑器

1.1sed概述

  • sed编辑器是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
  • sed编辑器可以根据命令来处理数据流中的数据,这些要么从命令行输入,要存储在一个命令文本文件中。

1.2sed工作流程

sed工作流程主要包括读取,执行和显示三个过程:

  • 读取:sed从输入流(文件,管道,标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间)
  • 执行:默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行
  • 显示:发送修改后的内容到输出流,在发送数据后,模式空间将会被清空

1.3sed基本法

sed -e '操作' 文件1 文件2
 
sed -n -e '操作' 文件1 文件2 
 
sed -f 脚本文件 文件1 文件2 
 
sed -i -e '操作' 文件1 文件2

1.4sed常用选项

 -e或--expression=多点编辑
 -f或--file=:表示用指定的脚本文件来处理输入的文件
 -h或--help:显示帮助
 -n:不输出模式空间内容到屏幕,即不自动打印,加p,又恢复自动打印
 -i:备份文件并原处编辑
 -r:使用扩展正则表达式

1.5sed命令的常用操作

   s:替换,替换指定符。
   d:删除,删除选定的行
   a:增加,在当前行下面增加一行指定内容
   i:插入,在选定的行上面插入一行指定内容
   c:替换,将选定行替换为指定内容
   Y:字符转换,转换前后的字符长度必须相同
   p:打印,如果同时指定行,表示打印指定行,如果不指定行,则表示打印所有内容,如果有非打印字符,则以ascll码输出。其中通常与_n选项一起使用
   =:打印行号
   l:打印数据流中的文本和不可打印的	ASCLL字符(比如结束符s,制表符\t)\

二.sed命令使用

2.1打印内容

  • sed‘ ’交互模式输入一行,自动打印一行相同的
  • sed -n ‘ ’交互模式输入一行,关闭自动打印

示例1:打印全部内容

在这里插入图片描述

在这里插入图片描述

示例2:查看文件,打印全部内容示在这里插入图片描述
在这里插入图片描述
示例 3:打印指定行内容

在这里插入图片描述

在这里插入图片描述

示例4:根据地址,打印指定多行内容

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

示例5:打印多行后退出

在这里插入图片描述

示例6:打印最后一行,使用通配符$

在这里插入图片描述
示例7:支持正则表达式

在这里插入图片描述
示例8:过滤关键字
在这里插入图片描述

示例9:关键字查找

在这里插入图片描述
在这里插入图片描述

示例10:打印文本的奇数和偶数行

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2删除内容

示例1:删除指定行

在这里插入图片描述

示例2:删除指定的多行

在这里插入图片描述

示例3:删除文件中的空行

在这里插入图片描述

示例4:删除指定字符结尾的行及取反

在这里插入图片描述

示例5:先备份内容在删除

在这里插入图片描述

2.3插入内容

示例1:在指定行后插入

在这里插入图片描述

示例2:插入空行,修改文件的换行,要加入一个 \
在这里插入图片描述
示例3:替换
在这里插入图片描述

2.4取反

在这里插入图片描述

2.5搜索替代

格式:sed   行范围 s/旧字符串/新字符串/替换标记

替换标记:

  • 数字:表明新字符串将替换第几处匹配的地方
  • g:表明新字符串将会替换所有匹配的地方
  • p:打印与替换命令匹配的行,与-n一起使用
  • w文件:将替换的结果写到文件中

示例1:修改selinux开机不自启配置文件
在这里插入图片描述

[root@yxp opt]#sed -i 's/SELINUX=enabled/SELINUX=disabled/' /etc/selinux/config 

在这里插入图片描述
示例2:修改多行,使用r以及-e

[root@yxp opt]#sed -ri -e 's/SELINUX=disabled/SELINUX=enabled/' /etc/selinux/config  -e 's/SELINUXTYPE=targeted/SELINUXTYPE=111/' /etc/selinux/config 

在这里插入图片描述
示例3;修改全局,后面加g

[root@yxp opt]#sed -i 's/root/admin/g' passwd 

2.6分组调用

示例1:
在这里插入图片描述
示例2:提取IP地址

[root@yxp ~]#ifconfig ens33 |sed -rn '2s/.*(inet) ([0-9.]+)  (netmask) ([0-9.]+)  (broadcast) ([0-9.]+).*/\2/p'
192.168.59.102

在这里插入图片描述
示例3:@和/效果一样

在这里插入图片描述

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

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

相关文章

Linux 虚拟机Ubuntu22.04版本通过远程连接连接不上,输入ifconfig只能看到127.0.0.1的解决办法

之前给虚拟机配置静态IP之后,可以直接通过主机Vscode远程连接。但是前一段时间把主机的TCP/IPV4静态IP设置了一下之后,再连接虚拟机就连不上了,于是参考解决虚拟机不能上网ifconfig只显示127.0.0.1的问题,又可以连接上了&#xff…

Python “贪吃蛇”游戏,在不断改进中学习pygame编程

目录 前言 改进过程一 增加提示信息 原版帮助摘要 pygame.draw pygame.font class Rect class Surface 改进过程二 增加显示得分 改进过程三 增加背景景乐 增加提示音效 音乐切换 静音切换 mixer.music.play 注意事项 原版帮助摘要 pygame.mixer pygame.mix…

SpringBoot复习:(56)使用@Transactional注解标记的方法的执行流程

首先,如果在某个类或某个方法被标记为Transactional时,Spring boot底层会在创建这个bean时生成代理对象(默认使用cglib) 示例: 当调用studentService的addStudent方法时,会直接跳到CglibAopProxy类去执行intercept方…

vscode里配置C#环境并运行.cs文件

vscode是一款跨平台、轻量级、开源的IDE, 支持C、C、Java、C#、R、Python、Go、Nodejs等多种语言的开发和调试。下面介绍在vscode里配置C#环境。这里以配置.Net SDK v5.0,语言版本为C#9.0,对应的开发平台为VS2019,作为案例说明。 1、下载vsc…

vue3小知识点汇总——基础积累

下面的小知识点比较零散,但是脑子不太好使,只能先记录一下啦,后面知识丰富起来后,慢慢就懂了。 1.最新版node.js已经不兼容vue2的项目了,学习vue3势在必行 node.js的安装及vue的搭建详细步骤:http://t.cs…

比特币暴跌的4个原因

作者:秦晋 加密市场每隔一段时间,就会迎来一次「暴跌」,而且每次暴跌原因各不相同。但归根到底都是「恐慌情绪」在作怪。继「312暴跌」、「519暴跌」之后,又迎来一个「8.18暴跌」。相比前两次暴跌,此次暴跌的原因或许略…

想做赴日程序员 有一定技术经验不学日语可以赴日IT吗?

有的小伙伴问:我有一定的IT技术和经验,不学日语的话,能去做赴日IT工作吗?说实话啊,我感觉如果行的话,那只能说明你运气不错,因为日本的IT行业在日本来说,并不是非常高薪的行业&#…

Redis中的有序集合

前言 本文着重介绍Redis中的有序集合的底层实现中的跳表 有序集合 Sorted Set Redis中的Sorted Set 是一个有序的无重复值的集合,他底层是使用压缩列表和跳表实现的,和Java中的HashMap底层数据结构(1.8)链表红黑树异曲同工之妙…

【深入了解PyTorch】PyTorch实战项目示例:深入探索图像分类、目标检测和情感分析

【深入了解PyTorch】PyTorch实战项目示例:深入探索图像分类、目标检测和情感分析 PyTorch实战项目示例:深入探索图像分类、目标检测和情感分析项目一:图像分类数据集准备构建模型训练模型模型评估和预测项目二:目标检测数据集准备构建模型训练模型模型评估和预测项目三:情…

记录因暴露阿里最高权限的Accesskey和secretKey导致的反弹shell攻击过程

Accesskey和SecretKey的泄露的原因 说到这个最高权限的key的泄露,绝对是低级的设计导致的。为了减少服务端的压力,直接让app直连oss服务,而且把最高权限的Accesskey和secretKey 下发到客户端,那么结果就是只要安装了该app的人&am…

js判断用户当前网络状态和判断网速

前端判断用户当前网络状态和判断网速 一、第一种是通过 HTML5 提供的 navigator 去检测网络(1)、原理介绍:(2)、兼容性 二、监听window.ononline和window.onoffline事件:三、通过ajax进行请求判断(兼容性好-推荐)(1)、原理介绍:(2)、注意: 四、navigator.connection方法监听网络…

PP-TS基于启发式搜索和集成方法的时序预测模型,使预测更加准确

时间序列数据在各行业和领域中无处不在,如物联网传感器的测量结果、每小时的销售额业绩、金融领域的股票价格等等,都是时间序列数据的例子。时间序列预测就是运用历史的多维数据进行统计分析,推测出事物未来的发展趋势。 为加快企业智能化转型…

Vue elementui 实现表格selection的默认勾选,翻页记录勾选状态

需求&#xff1a;当弹出一个列表页数据&#xff0c;对其进行筛选选择。 列表更新&#xff0c;填充已选数据 主要使用toggleRowSelection 代码如下&#xff1a; <el-table v-loading"loading" :data"drugList" selection-change"handleSelection…

安卓手机跑 vins slam (1)

一直是手机拍照&#xff0c;用RealityCapture重建三维模型。因为他是靠特征点去把拍摄的多个图像进行对齐的。需要拍摄的足够多&#xff0c;且有特征才能对齐&#xff0c;要不然会生成多个组件&#xff0c;还得手动拼。 而且重建的三维模型有尺度问题&#xff0c;自动重建的模…

四、内存管理

1、为什么需要自己实现内存管理 (1)RTOS涉及的内核对象&#xff1a;task、queue、semaphores和event group等。为了让FreeRTOS更容 易使用&#xff0c;这些内核对象一般都是动态分配&#xff1a;用到时分配&#xff0c;不使用时释放。使用内存的动态管理功能&#xff0c;简化了…

使用yolov5进行安全帽检测填坑指南

参考项目 c​​​​​​​​​​​​​​GitHub - PeterH0323/Smart_Construction: Base on YOLOv5 Head Person Helmet Detection on Construction Sites&#xff0c;基于目标检测工地安全帽和禁入危险区域识别系统&#xff0c;&#x1f680;&#x1f606;附 YOLOv5 训练自己的…

Unity导入google.protobuf失败,无法找到google命名空间

问题&#xff1a; 1.刚开始把protobuf的文件夹直接从其他项目里(unity2021)里复制到unity(2020)版本&#xff0c;当时报错protobuf.dll的依赖项system.memory版本不对。 2.没有使用原来的protobuf文件了。使用vs2019的NuGet管理包来下载Google.Protobuf &#xff0c;仍然报错找…

爬虫学得好,然后呢?最新Python人工智能就业班课程

课程链接&#xff1a; 私信&#xff1a;达内 课程介绍&#xff1a; 【达内最新Python人工智能就业班课程目录】 &#x1f4da; 1. Python核心 &#x1f9e0; 2. 面向对象程序设计 &#x1f52e; 3. Python高级 &#x1f4bb; 4. 阶段项目实战 &#x1f427; 5. Linux操作系…

PHP海外代购管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 海外代购管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 代码下载 https://download.csdn.net/download/qq_41221322/88229435 论文 https://…

python的全局解释锁(GIL)

一、介绍 全局解释锁&#xff08;Global Interpreter Lock&#xff0c;GIL&#xff09;是在某些编程语言的解释器中使用的一种机制。在Python中&#xff0c;GIL是为了保证解释器线程安全而引入的。 GIL的作用是在解释器的执行过程中&#xff0c;确保同一时间只有一个线程可以…