网络三剑客之sed

news2024/12/29 1:59:11

目录

一、sed是什么

二、sed为什么这样工作(原理)

三、sed命令该怎么操作

3.1 基本的操作选项

3.2 怎么去使用sed

3.3 操作实例

3.3.1 打印输出(-n、-p、-r)

3.3.2 增加内容(i、a)

3.3.3 删除(d)

3.3.4 替换(替换的内容前加c)

3.3.5 搜素替换(s、g、p)

3.3.6 插入文件(r)

3.3.7 另存为到文件(w +路径)

3.3.8 同时编辑(-e)

3.3.9 分组操作{}

3.3.10 读取完退出(q)

3.3.11 sed脚本

3.3.12 sed的高级应用

3.3.13 扩展


一、sed是什么

  • 目的:sed 命令是利用脚本来处理文本文件。
  • 原因:它可以依照脚本的指令来处理、编辑文本文件
  • 范围:主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等

二、sed为什么这样工作(原理)

  • 文本:sed编辑器处理一段文本时,首先会逐行进行处理,也就是说每次只读取一行内容
  • 模式空间:接着将读取的内容保存在一个临时缓存区中,这个缓存区叫做模式空间
  • 屏幕输出:然后根据预先提供的规则命令匹配并修改数据;再将该行输出到屏幕上并清空模式空间
  • 继续处理:sed处理完一行数据后,会继续处理下一行,不断重复这个过程,直到将文件中的所有数据处理完毕

注:sed把每一行都保存在模式空间中,对这个副本进行修改,所以默认不会修改或破坏源文件

三、sed命令该怎么操作

3.1 基本的操作选项

基本格式:

sed [选项] '操作' 参数

sed [选项] -f scriptfile 参数

常见sed命令选项
-e表示用指定命令或者脚本来处理输入的文本文件
-f表示用指定的脚本文件来处理输入的文本文件
-h显示帮助
-n表示仅显示处理后的结果
-i直接编辑文本文件
-r使用扩展正则表达式
-s将多个文件视为独立文件,而不是单个连续的长文件流
常见sed命令操作
a增加:在当前行下面增加一行指定内容
c替换:将选定行替换为指定内容
d删除:删除选定的行
i插入:在选定行上面插入一行指定内容
p

打印:

  • 如果同时指定行,表示打印指定行
  • 如果不指定行,则表示打印所有内容
  • 如果有非打印字符,则以 ASCII 码输出
  • 其通常与“-n”选项一起使用
s替换:指定字符
y字符转换

3.2 怎么去使用sed

sed             [option]...                    'script;script;...'                         [input file...]

                   选项                            自身脚本语法                          支持标准输入管道

  • options指的是sed的命令行参数
  • script是指需要对输入执行的一个或者多个操作指令,一般需要用单引号括起来,这样可以避免shell对 特殊字符的处理。sed会依次读取输入文件的每一行到缓存中并应用script中指定的操作指令,因此而带 来的变化并不会影响最初的文件(除非option加了-i参数
  • 每条操作指令由pattern和procedure两部分组成,顾名思义,pattern是匹配的规则,一般为用’/'分隔的 正则表达式(也有可能是行号,具体参见Sed命令地址匹配问题总结),而procedure则是一连串编辑命 令(action)

总结:sed命令+选项 ‘定位+动作+内容’ 文件名

3.3 操作实例

3.3.1 打印输出(-n、-p、-r)

  • 如何显示范围行号,行号

  • 奇偶数表示

  • 特殊符号表示打印($、[0-9]、!、=)

  • sed默认不支持扩展正则,如果要支持,需要加-r选项

  • 结合管道符号

3.3.2 增加内容(i、a)

注意:a或i所有内容都会被理解为需要添加的内容

3.3.3 删除(d)

3.3.4 替换(替换的内容前加c)

c指令使得整行内容全部替换

 注意:这里没有真的改变文件内容,只是输出到屏幕,如果想要真的替换,需要用-i选项,建议用-i之前对原文 件进行备份

3.3.5 搜素替换(s、g、p)

语法

s/……/……/修饰符

查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###

替换修饰符:

g:行内全局替换

p:显示替换成功的行

w /PATH/FILE:将替换成功的行保存至文件中

I,i:忽略大小写

注:把所有/sbin/nologin换成kgc,/需要转义

注:以sync开头的行并且前面加#号,那就需要保留sync,那就要把搜索的字符写成&

  • 忽略大小写的替换

  • 生产案例

3.3.6 插入文件(r)

3.3.7 另存为到文件(w +路径)

  • 追加,不进行覆盖

3.3.8 同时编辑(-e)

3.3.9 分组操作{}

当我们需要对一行数据进行多次操作的时候我们可以使用{}进行分组

  • 分组 s//代表查找替换
  • ()代表分组
  • \1 代表留下的组
  • r:读取指定文件

从 ifconfig 命令的输出中提取 ens33 网卡的 IP 地址

通过 sed 的正则表达式匹配,它会找到 包含 inet 字段的行,并从中提取出 IP 地址部分,然后输出这个 IP 地址

3.3.10 读取完退出(q)

3.3.11 sed脚本

使用 sed 命令迁移符合条件的文本时,常用到以下参数.

  • H:复制到剪贴板
  • g、G:将剪贴板中的数据覆盖/追加至指定行
  • w:保存为文件
  • r:读取指定文件
  • a:追加指定内容
  • I,i 忽略大小写

注意:

  • sed脚本文件第一行要声明#!/bin/sed -f
  • 不要加单引号
  • 每行的最后不能有空格等多余字符
  • #号开头为注释
  • 一行有多个命令时用分号隔开
  • sed的返回值一般情况为0,不管是不是修改成功了,除非是语法错误 所以sed的返回值$?一般不作为sed成功的判断条件

脚本一:

3.3.12 sed的高级应用

  • -r匹配正则

  • 结合变量使用

3.3.13 扩展

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

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

相关文章

网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程

前言 1.入行网络安全这是一条坚持的道路,三分钟的热情可以放弃往下看了。2.多练多想,不要离开了教程什么都不会了,最好看完教程自己独立完成技术方面的开发。3.有时多百度,我们往往都遇不到好心的大神,谁会无聊天天给…

机器学习 | 回归算法原理——最速下降法(梯度下降法)

Hi,大家好,我是半亩花海。接着上次的最小二乘法继续更新《白话机器学习的数学》这本书的学习笔记,在此分享最速下降法(梯度下降法)这一回归算法原理。本章的回归算法原理基于《基于广告费预测点击量》项目,…

大文件分片上传(前端TS实现)

大文件分片上传 内容 一般情况下,前端上传文件就是new FormData,然后把文件 append 进去,然后post发送给后端就完事了,但是文件越大,上传的文件也就越长,如果在上传过程中,突然网络故障,又或者…

opencascade AIS_InteractiveContext源码学习9 obsolete methods

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

鸿蒙SDK开发能力

什么是鸿蒙SDK:HarmonyOS(Software Development Kit)是面向应用和服务开发的开放能力合集,本质就是工具集,与JDK、AndroidSDK在逻辑上有相似之处 18N:1指的是手机,8指的是车机、音箱、耳机、手表/手环、平板、大屏、PC、AR/VR&am…

Python——使用Seaborn钻石数据可视化分析(2)

续 Python——使用Seaborn钻石数据可视化分析(1) 目录 📈 4、非数值变量描述性统计分析 1️⃣ 柱状图——分析钻石切工的情况 📍 sns.countplot —— 绘制柱状图、条形图 2️⃣ 箱线图——分析不同切工的钻石的价格情况 📍 sns.barplot —— 不同分类变量之间的数…

用这些宝藏AI工具打造副业!实现被动收入!

前言 大家好,我是月月!今天我们来梳理一下在目前的形势下,如何用AI工具打造一个躺赚的副业,实现被动收入?有哪些方法和途径?在本篇文章我主要提供一些已有的AI工具,后面我们再根据具体的AI工具…

国家自然灾害防治研究院专家莅临国信华源公司指导调研

7月16日,应急管理部国家自然灾害防治研究院党委书记杨思全与中关村科技园区丰台园管理委员会副主任王成玉一行莅临北京国信华源公司进行调研指导。我司总经办及相关部门负责人陪同座谈,并详细汇报了企业的运营情况和技术成果。 在我司高层的陪同下&#…

数字孪生:变电站监测和运维的智能化实践

随着夏季高温天气的到来,我国用电也迎来了高峰。用电负荷持续走高,对全国各地电网运维也迎来了挑战。电力系统作为现代社会的基础设施,其稳定性和可靠性至关重要,变电站则是实现电力系统电力互联互通的枢纽。 在传统变电站中&…

VLC输出NDI媒体流

目录 1. 下载安装VLC Play 2. 首先在电脑上安装NDI Tools 3. 运行VLC进行输出配置 4. 播放视频 5. 验证 (1)用Studio Monitor验证 (2)用OBS验证 NDI(Network Device Interface)即网络设备接口,是由美国 NewTek 公司开发的免费标准,它可使兼容的视频产品以高质量…

新书速览|PyTorch深度学习与计算机视觉实践

《PyTorch深度学习与计算机视觉实践》 本书内容 在人工智能的浩瀚星空中,深度学习犹如一颗耀眼的明星,引领着计算机视觉技术的发展。《PyTorch深度学习与计算机视觉实践》带领读者领略深度学习在计算视觉领域的魅力,详解使用PyTorch 2.0进行…

Spring Bean配置文件创建对象

类型&#xff1a; 1、值类型 2、null &#xff08;标签&#xff09; 3、特殊符号 &#xff08;< -> < &#xff09; 4、CDATA <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/bea…

【Python】成功解决conda创建虚拟环境时出现的CondaHTTPError: HTTP 000 CONNECTION FAILED错误

【Python】成功解决conda创建虚拟环境时出现的CondaHTTPError: HTTP 000 CONNECTION FAILED错误 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&a…

乐鑫 Matter 技术体验日回顾|全面 Matter 解决方案驱动智能家居新未来

日前&#xff0c;乐鑫信息科技 (688018.SH) 在深圳成功举办了 Matter 方案技术体验日活动&#xff0c;吸引了众多照明电工、窗帘电机、智能门锁、温控等智能家居领域的客户与合作伙伴。活动现场&#xff0c;乐鑫产研团队的小伙伴们与来宾围绕 Matter 产品研发、测试认证、生产工…

elmentui this.$confirm使用模板字符串构建HTML结构

tip(){const checkingList [];const findList[入会1,入会2,入会3] //数组const sueccList [{name:入会,suecc:1000,numcot:1000},{name:aaaaa,suecc:222,numcot:3333}] //数组对象var message// 使用模板字符串构建HTML结构if(sueccList.length>0){message <div>…

【系统架构设计】数据库系统(二)

数据库系统&#xff08;二&#xff09; 数据库模式与范式数据库设计数据库设计的方法数据库设计的基本步骤 事务管理并发控制故障和恢复 备份与恢复分布式数据库系统数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库设计 数据库设计的方法 目前已有的数据库设计方法可分…

Matlab 命令行窗口默认输出(异常)

目录 前言Matlab 先验知识1 异常输出的代码2 正常输出的代码 前言 在单独调试 Matlab 写的函数时出现不想出现的异常打印值&#xff0c;逐个注释排查才找到是 if elseif else 代码块的问题&#xff0c;会默认打印输出 else 部分第一个返回值的值&#xff08;下方代码中的 P值&…

【linux】Shell脚本三剑客之grep和egrep命令的详细用法攻略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

【MySQL进阶之路 | 高级篇】简谈redo日志

1. 前言 事务有四种特性&#xff1a;原子性&#xff0c;一致性&#xff0c;隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢&#xff1f; 事务的隔离性由锁机制实现。而事务的原子性&#xff0c;一致性和持久性由事务的redo日志和undo日志来保证。 REDO LOG称为…

Mysql或MariaDB数据库的用户与授权操作——实操保姆级教程

一、问题描述 在日常的工作中,我们需要给不同角色的人员创建不同的账号,他们各自可访问的数据库或权限不一样,这时就需要创建用户和赋予不同的权限内容了。 二、问题分析 1、创建不同的角色账号; 2、给这些账号授予各自可访问数据库的权限。 三、实现方法 Centos8安装…