当前位置: 首页 > news >正文

如此理解sed会简单

缘由

以前总觉得sed的语法过于难懂,用的时间都不一定会想起来怎么用。

每次都需要先查找帮助,然后才能应用,但随后又忘 😦

直到今天通过man sed链接到sed官网上对sed的介绍,才明白它竟然是如此的简单明了,和逻辑自然!

提纲挈领的sed命令语法结构

# sed commands follow this syntax:sed [options] [addr]X[flags]

X is a single-letter sed command.

X 是单字符操作命令,例如s command

[addr] is an optional line address. If [addr] is specified, the command X will be executed only on the matched lines.

行地址可选。如果指定了,则sed仅工作做匹配的行上

[addr] can be a single line number, a regular expression, or a range of lines (see sed addresses).

地址信息可以是单一行号、单正则表达式,或由它们组成的地址范围

Additional [flags] are used for some sed commands.

附加的标志信息可以对一些sed命令进行控制

更详细的介绍,需要看官网介绍

语法概念介绍

sed区别于grep搜索命令工具,sed只所以被称之为流编辑器,就在于sed除查找外的编辑动作,相对于grep还提供了流的增、删、改的功能。

而这方面,grep命令就显得无能为力了。

可以想象,一般我们对于文档进行编辑,遇到的首要问题是关于行的定位。

文档编辑要针对那一行,或那一段进行处理,所以,sed工具语法开始就首先让你提供关于地址的信息,其实是非常自然的

在语法中地址虽然可以忽略,则当地址信息省略后,实则命令是针对于全文档的处理。

  • 后续通过各种具体例子,会看到sed的命令语法结构以一贯之

所以,sed命令是非常容易理解的 😃

sed命令语法特殊说明

命令部分经常使用单引号,而单引号符合bash对单引号引用内容的限定

单引号用于保留字符的字面含义,各种特殊字符在单引号里面,都会变为普通字符,比如星号*、美元符号$、反斜杠\等

当然也可以用双引号,以实现变量替换

sed选项特别介绍

  • -n

默认情况下,将打印每一行的执行结果,以利于重定向处理结果到结果文件中。开启-n选项后,结合p命令字可以有选择地输出行

# 不仅全部输出了,控制打印的特殊行也输出了,所以,显示了两次
seq 5 | sed '1,2p'# 仅有第一行和第二行输出
seq 5 | sed -n '1,2p'
  • -i

选项开启后将原地编辑输入文件,并不将结果输出到标准输出

结束语

正常的话,如果你了解了,前面sed命令概念介绍,以及比较熟悉sed命令,看完前面基本上可以做到心领神会了。

后面只需要更专注编辑处理的逻辑概念,然后,再去拼凑适合的sed命令即可。

对于附录部分,可以有选择地阅读,以增加对于sed命令的了解。

后期会随着文档的更新,不断积累sed一些常用命令。

附录

sed常用命令单字母

  • s

替换

  • d

删除

  • a

追加

  • i

前插

  • p

打印

地址分类

  • 数字
  • 正则表达式
  • 地址范围

特别地,在地址与命令字之间加入!,则可以实现地址反选

具体例子介绍

删除首行

seq 5 | sed  '1d'

数字行号加删除命令

删除最后一行

seq 5 | sed  '$d'

特殊行号符号加删除命令

组合命令

seq 5 | sed  '1d; $d'

截取首部行

seq 5 | sed  '2q'

地址范围反选

seq 5 | sed  '1!d'

利用分号进行命令分割。其它-e方式不够简洁

s命令介绍

本身sed命令地址部分就可以有多种变化,特别地,可以与正则表达式进行结合,所以,经常看到比较复杂的sed命令都源于此种地址的的变化,以及加上s command命令本身的一些负责语法!

s命令语法

s/regexp/replacement/flags

例子

echo "hello! apple is red
hello! banana is yellow
hello! watermelon is green" > input.txtsed '/apple/s/hello/world/' input.txt

通过正则表达式地址定位方式,对于含有apple的行,进行搜索hello,如果匹配则替换为world
此例也非常典型的说明了sed语法结构是一以贯之的,s comand很好地符合了语法结构。

利用sed语法结构,可以很清晰地解析任何sed操作!

参考

  • sed官网帮助
    • sed命令选项
    • sed address官网章节
    • sed 如何工作的
    • sed s command
  • wangdoc shell 单引号介绍

相关文章:

如此理解sed会简单

缘由 以前总觉得sed的语法过于难懂,用的时间都不一定会想起来怎么用。 每次都需要先查找帮助,然后才能应用,但随后又忘 😦 直到今天通过man sed链接到sed官网上对sed的介绍,才明白它竟然是如此的简单明了&#xff0…...

数据库-MySQL之数据库必知必会1-9章

检索数据 1.检索不重复的行 从 Customers 表中检索所有的 ID select DISTINCT cust_id from Customers;DISTINCT表示去掉重复的行 2.限制结果-分页 SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。…...

Selenium+Python自动化测试环境搭建

selenium python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。 Selenium 框架底层使用JavaS…...

k8s存储卷 PV和PVC

目录 emptyDir存储卷 hostPath存储卷 nfs共享存储卷 PVC 和 PV 生命周期 一个PV从创建到销毁的具体流程如下: 静态pvc 动态pvc 3、定义PVC 4、测试访问 搭建 StorageClass NFS,实现 NFS 的动态 PV 创建 1、在stor01节点上安装nfs&#xff0…...

【架构】后端项目经典分层架构介绍

文章目录 前言分层架构项目实践示例项目结构 其他知识 前言 开发后端项目时,我们最常见的一种架构模式就是分层架构 。 所谓的分层架构,就是把系统自上而下分为多个不同的层,每一层都有特定的功能和职责,且只和自己的直接上层与…...

二叉树的中序遍历

一、题目。 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root [] 输出:[] 示例 3: 输入:…...

什么是代理IP池?真实测评IP代理商的IP池是否真实?

代理池充当多个代理服务器的存储库,提供在线安全和匿名层。代理池允许用户抓取数据、访问受限制的内容以及执行其他在线任务,而无需担心被检测或阻止的风险。代理池为各种在线活动(例如网页抓取、安全浏览等)提高后勤保障。 读完…...

接收表单数据

如果您尝试按下提交按钮,浏览器将显示“Method Not Allowed”错误。这是因为到目前为止,前一节中的登录视图函数完成了一半的工作。它可以在网页上显示表单,但是还没有逻辑来处理用户提交的数据。这是Flask-WTF使工作变得非常简单的另一个领域…...

串口通信(11)-CRC校验介绍算法

本文为博主 日月同辉,与我共生,csdn原创首发。希望看完后能对你有所帮助,不足之处请指正!一起交流学习,共同进步! > 发布人:日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…...

什么是Java虚拟机(JVM),它的作用是什么?

什么是Java虚拟机(JVM) Java虚拟机(Java Virtual Machine,JVM)是Java平台的关键组成部分,它是一种在不同操作系统上运行Java程序的虚拟计算机。 JVM的作用是执行Java字节码(Java bytecode&#…...

力扣876:链表的中间结点

力扣876:链表的中间结点 题目描述: 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:head [1,2,3,4,5] 输出:[3,4,5]…...

三菱FX3U系列—原点回归指令

目录 一、简介 二、指令形式 1、原点指令[ZRN/DZRN] 2、带搜索的原点回归指令[DSZR] 三、回归指令运行过程 1、ZRN原点回归运行过程 2、带搜索的原点回归运行过程 四、特殊辅助继电器 五、特殊输出模块 六、总结 一、简介 用于将电机或伺服驱动器控制的轴回到预定的原…...

ES常用查询命令

一、基本命令 1、获取所有_cat命令 curl -X GET localhost:9200/_cat 2、获取es集群服务健康状态 curl -X GET localhost:9200/_cat/health?v epoch: 时间戳的 Unix 时间戳格式,表示快照生成的时间。 timestamp: 可读性更强的时间戳格式,表示快照生…...

【Qt之元对象系统】

描述 Qt的元对象系统(Meta-Object System)是Qt框架的核心机制之一,它提供了运行时类型信息(RTTI)和信号与槽(Signals and Slots)机制的支持。元对象系统在Qt中扮演了很重要的角色,它…...

基于FPGA的EMAC模块与FIFO模块:高速数据传输与存储

基于FPGA的EMAC模块与FIFO模块:高速数据传输与存储 在现代社会,高速数据传输和存储是信息技术领域的关键问题之一。而基于FPGA的EMAC模块与FIFO模块则成为了解决这些问题的重要途径。本文将介绍这两个模块的原理、实现方法以及如何在FPGA中应用它们。 …...

大数据毕业设计选题推荐-农作物观测站综合监控平台-Hadoop-Spark-Hive

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

高校教务系统登录页面JS分析——长沙理工大学教务系统

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文将是本专栏最后一篇文章,我看了绝大多数高…...

element-ui的form校验失败

数值与字符串混淆 数值 <el-input type"number" v-model.number"form.averageFruitWeight" placeholder"请输入平均单果重"/>字符串 fruitDevelopmentStage: [{pattern: ^[-\\]?([0-9]\\.?)?[0-9]$, message: 输入必须为数字, trigge…...

java数据结构--阻塞队列

目录 一.概念 二.生产者消费者问题 三.阻塞队列接口BlockingQueue 四.基于数组实现单锁的阻塞队列 1.加锁方式 2.代码实现 3.解释说明 (1).offer添加元素 &#xff08;2&#xff09;poll取出元素 4.timeout超时时间 5.测试 五.基于数组实现双锁的阻塞队列 1.问题 …...

使用p2p实现Linux内网快速分发文件

安装opentracker 方法一&#xff1a;编译安装 参考如下官方文档进行操作即可&#xff0c;国内下载源码会比较慢 https://erdgeist.org/arts/software/opentracker/ 编译完成后会生成可执行文件opentracker和opentracker.debug 可以直接./opentracker.debug进行验证 方法二&a…...

WAV、MP3、AAC傻傻分不清?一文搞懂音频格式、采样率、比特率对音质和文件大小的实际影响

WAV、MP3、AAC傻傻分不清&#xff1f;一文搞懂音频格式、采样率、比特率对音质和文件大小的实际影响 第一次处理音频文件时&#xff0c;看到WAV、MP3、AAC这些格式选项&#xff0c;还有采样率、比特率这些参数&#xff0c;是不是感觉头都大了&#xff1f;别担心&#xff0c;这篇…...

从‘虹猫蓝兔’到‘终身学习’:聊聊AI模型如何像人一样持续进化,而不只是‘打补丁’

从‘虹猫蓝兔’到‘终身学习’&#xff1a;AI模型如何像人类一样持续进化 想象一下&#xff0c;你刚学会骑自行车&#xff0c;第二天又学会了游泳——结果突然发现自己完全忘记了怎么骑车。这种荒谬的场景&#xff0c;正是当前AI模型在持续学习新任务时面临的真实困境。当推荐系…...

你的模型‘虚胖’了吗?聊聊PyTorch中可训练参数与总参数量的区别及优化思路

你的模型‘虚胖’了吗&#xff1f;聊聊PyTorch中可训练参数与总参数量的区别及优化思路 在深度学习模型开发中&#xff0c;我们常常会关注两个关键指标&#xff1a;总参数量&#xff08;Params&#xff09;和可训练参数量&#xff08;Trainable Params&#xff09;。这两个数字…...

N_m3u8DL-RE实战指南:从零掌握跨平台流媒体高效下载技术

N_m3u8DL-RE实战指南&#xff1a;从零掌握跨平台流媒体高效下载技术 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE …...

计算机毕业设计:Python农业粮食产量与气候预测平台 Django框架 数据分析 可视化 机器学习 深度学习 大数据 大模型(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

Hyper-V在Win11家庭版上的隐藏安装法:5分钟搞定虚拟机平台

Hyper-V在Win11家庭版上的隐藏安装法&#xff1a;5分钟搞定虚拟机平台 当技术爱好者拿到预装Windows 11家庭版的设备时&#xff0c;往往会发现官方功能列表中缺少Hyper-V这个专业级虚拟化工具。但鲜为人知的是&#xff0c;微软其实在系统底层保留了完整的Hyper-V组件&#xff0…...

别再手动写卷积了!用Matlab FDA插件+Verilog快速搞定FPGA FIR滤波器(附4MHz低通/100MHz带通完整代码)

从Matlab到FPGA&#xff1a;可视化FIR滤波器设计全流程实战 在数字信号处理领域&#xff0c;FIR滤波器因其稳定性、线性相位特性而广受欢迎。但传统手工计算系数的方式不仅耗时耗力&#xff0c;还容易出错。本文将展示如何利用Matlab的Filter Designer & Analysis工具快速生…...

【PCIe】深入解析 Scaled Flow Control:如何通过 Scaling Factor 突破流控瓶颈

1. 为什么我们需要Scaled Flow Control&#xff1f; 我第一次接触PCIe流控机制时&#xff0c;被一个看似简单的数字难住了——为什么Header Credit最大只能到127&#xff1f;这个问题困扰了我整整两周。直到在某个芯片调试现场&#xff0c;亲眼看到RX Buffer溢出的红色告警灯亮…...

终极指南:用MediaCreationTool.bat一键创建Windows安装媒体,支持1507到23H2全版本

终极指南&#xff1a;用MediaCreationTool.bat一键创建Windows安装媒体&#xff0c;支持1507到23H2全版本 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirro…...

3步彻底解决Visual C++运行库错误:开源工具的实战指南

3步彻底解决Visual C运行库错误&#xff1a;开源工具的实战指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一款开源的一站式解决方案…...