如此理解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 单引号介绍

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

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

相关文章

source activate my_env 和conda activate my_env 有什么区别

source activate my_env 和conda activate my_env 有什么区别 source activate 和 conda activate 是两个不同的命令,用于在Conda环境中激活特定的虚拟环境。它们的区别在于它们分别适用于不同版本的Conda。 source activate: source activate 是在Con…

分享Python的十大库,这你一定得知道!

文章目录 前言关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言 Python为我们提供了非常完善的基础库&#…

c: struct sort descending and ascending in windows and Ubuntu

/*** file StudentStructSort.h* author geovindu,Geovin Du,涂聚文 (geovindu163.com)* ide: vscode c11,c17 Ubuntu 22.4* brief 结构体排序示例* date 2023-11-05* version 0.1* copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants**/#ifnd…

计算机技术专业CSIT883系统分析与项目管理介绍

文章目录 前言一、学科学习成果二、使用步骤三、最低出勤要求四、讲座时间表五、项目管理 前言 本课程介绍了信息系统开发中的技术和技术,以及与管理信息技术项目的任务相关的方法和过程。 它研究了系统分析师、客户和用户在系统开发生命周期中的互补角色。 它涵盖…

APISIX源码安装问题解决

官网手册的安装语句: curl https://raw.githubusercontent.com/apache/apisix/master/utils/install-dependencies.sh -sL | bash -执行 install-dependencies.sh 报如下错误: Transaction check error:file /usr/share/gcc-4.8.2/python/libstdcxx/v6…

Python+reuqests自动化接口测试

1.最近自己在摸索Pythonreuqests自动化接口测试,要实现某个功能,首先自己得有清晰的逻辑思路!这样效率才会很快! 思路--1.通过python读取Excel中的接口用例,2.通过python的函数调用,get/Post 进行测试&…

Apple :苹果将在明年年底推出自己的 AI,预计将随 iOS 18 一起推出

本心、输入输出、结果 文章目录 Apple :苹果将在明年年底推出自己的 AI,预计将随 iOS 18 一起推出前言三星声称库克相关图片弘扬爱国精神 Apple :苹果将在明年年底推出自己的 AI,预计将随 iOS 18 一起推出 编辑:简简单…

python操作链接数据库和Mysql中的事务在python的处理

python操作数据库 pymysql模块: pip install pymysql作用:可以实现使用python程序链接mysql数据库,且可以直接在python中执行sql语句 添加操作 import pymysql #1.创建链接对象c conn pymysql.Connect(host127.0.0.1,#数据库服务器主机地址port3306, #mysql的端口…

大疆mini4pro丐版遥控器怎么手动对焦

屏幕上点击AF/MF切换按钮 切换到MF 长安MF就会出现对焦条 上下滑动即可手动对焦

通过postgis空间库导入sql格式的矢量数据到arcgis中

1、在postgis中创建数据库 命名为test3 2、创建空间扩展 3、导入sql矢量文件 进入psql.exe目录中 进入dos命令框中 输入命令,其中host输入自己的主机ip,database为自己的数据库名称,数据路径修改为自己电脑上的路径,注意反斜杠 psql

Node.js |(七)express案例实践:记账本 | 尚硅谷2023版Node.js零基础视频教程

文章目录 📚基本结构搭建📚响应静态网页📚获取表单数据📚借助lowdb保存账单信息📚完善成功提醒📚账单列表📚删除账单📚final 学习视频:尚硅谷2023版Node.js零基础视频教程…

MySQL–第4关:查询用户日活数及支付金额

MySQL–第4关:查询用户日活数及支付金额 – WhiteNights Site 标签:MySQL 非常好的题,爱来自中国。 题目 没啥用 任务描述 现有3张业务表,详见如下: 需要输出结果如下,没有支付的日期不需要显示,请写出对…

前端缓存机制——强缓存、弱缓存、启发式缓存

强缓存和弱缓存的主要区别是主要区别在于缓存头携带的信息不同。 强缓存: 浏览器发起请求,查询浏览器的本地缓存,如果找到资源,则直接在浏览器中使用该资源。若是未找到,或者资源已过期,则浏览器缓存返回未…

单页面应用与多页面应用的区别?

单页面应用(SPA)与多页面应用(MPA)的主要区别在于页面数量和页面跳转方式。单页面应用只有一个主页,而多页面应用包含多个页面。 单页面应用的优点有: 用户体验好:内容的改变不需要重新加载整…

Python最基础的五个部分代码,零基础也能轻松看懂。

文章目录 前言一、表达式二、赋值语句三、引用四、分支语句五、循环语句关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼…

K8S知识点(七)

(1)实战入门-Namespace kubernets:系统创建的资源在这个命名空间里 ,集群组件资源 kubrnets组件也是以pod的形式运行的 命令行方式操作 查看namespace和详情: 创建和查看和删除: 使用过配置文件操作&am…

leetcode做题笔记226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出:[2,3,1]示例 3&#x…

查找或替换excel换行符ctrl+j和word中的换行符^p,^l

一、excel中 直接上图。使用ctrlh调出替换,查找内容里按ctrlj(会出现一个闪的小点),即为换行符。 二、word中 在word中,^p和^l分别代表换行符(enter)和手动换行符(使用shiftenter&…

assets_common.min.js

assets_common.min.js odoo将零散的js文件主要打包成了两个文件,分别是web.assets_common.min.js 和web.assets_backend.min.js, 我们分别看看这两个文件里都有些啥? common.js最先加载,看看里面都有些啥 1、boot.js 定义了od…

Python使用Numba装饰器进行加速

Python使用Numba装饰器进行加速 前言前提条件相关介绍实验环境Numba装饰器进行加速未加速的代码输出结果 numba.jit加速的代码输出结果 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入Python日常小操作专栏、Ope…