sed替换命令

使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换。

sed 's/88/--/' filename 将filename每行第一次出现的88用字符串--替换,然后将该文件内容输出到标准输出

sed 's/88/--/g' filename 附加g选项告诉sed执行全局替换

匹配第N个进行替换

N=1

sed '0,/88/s//--/' filename 只匹配到第一个88为止

sed ':a;N;$!ba;s/88/--/' filename

第二个命令

:a 创建一个label a

N 将下一行读入到pattern space

$! 如果不是最后一行,ba跳转到label a处

s/a/A/ 替换a为A,只替换一次

步骤1-3(即:a;N;$!ba;)就是为了将filename全部内容读到模式空间中,然后再进行替换,这样替换就只会做一次。

N=3

第一个命令叫打点记数法,因为sed没有var++之类的操作来记数。

第二个命令和上面是一样的原理,全部读入文本后统一替换第3个匹配的内容。

N=last

第一个命令,没匹配到 /\n88/ 的内容就读取下一行,然后 ba 跳转去开始处,如果读取到88的行呢,就执行后面的 P;D 组合,D也有循环功能,一直把匹配 \n88 内容的第一行打印,删除,直到不匹配/\n88/(因为换行符已经被打印出去了,所以不再会匹配到 \n88),这时候才继续往下读,如果又读到88的行,那么又执行P;D循环,同上操作。一直到匹配到最后一个88的行,继续读取到末行时执行替换,N 因为没有下一行可读,所以会自动中止命令,因为没有 -n 参数会打印 pattern space 里的内容到屏幕,所以就不会再执行后面的 ba 避免了死循环,这样的用法只存在于 GNU sed ,大家注意。所以这整个流程只会替换最后一个88。

第二个命令和上面的一样,也是全部读进 pattern space 里,最后利用正则的贪婪替换掉最后一个88。

注意两者区别。

shell学习之-sed用法解析_【Linux】shell学习之sed相关推荐

  1. python中continue用法案例_记录今天学习python中for与while循环针对break和continue的用法...

    python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带 ...

  2. linux shell 解析文本文件,linux Shell 全解析

    Shell 函数Shell 字符串 单引号 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: 单引号字串中不能出现单引号(对单引号使用转义符后也不行). 双引号 双 ...

  3. linux shell 函数 格式化,速查笔记(linux shell编程)

    零.shell中的内部变量: 1. $?:    表示shell命令的返回值. 2. $$:    表示当前shell的pid. 3. $!:    最后一个放入后台作业的PID值. 4. $0:   ...

  4. linux sed工具,玩转Linux - 神级工具 sed awk

    简介 本文主要介绍 Linux 系统的两个神级工具:sed 和 awk ,他们是Linux高手们必备的技能,很值得我们去研究的东西. 这里是我在网上书上收集的相关资料,因为这两个工具很有名也很重要,所 ...

  5. 深度学习将灰度图着色_通过深度学习为视频着色

    深度学习将灰度图着色 零本地设置/ DeOldify / Colab笔记本 (Zero Local Setup / DeOldify / Colab Notebook) "Haal Kais ...

  6. 基于几何学习图像的三维重建发展_基于深度学习的三维重建算法:MVSNet、RMVSNet、PointMVSNet、Cascade系列...

    欢迎关注微信公众号"3D视觉学习笔记",分享博士期间3D视觉学习收获 MVSNet:香港科技大学的权龙教授团队的MVSNet(2018年ECCV)开启了用深度做多视图三维重建的先河 ...

  7. shell学习之-sed用法解析_Shell脚本之sed的使用

    1.sed命令:主要作用是查找:新增 删除 和修改替换. user.txt daokr#cat user.txt ID Name Sex Age zhang M 19 wang G 20 cheng ...

  8. shell调用python获取返回值_[linux的shell脚本调用python脚本的返回值][shell调python][ubuntu的shell调用python脚本得到返回值]...

    最近搞个东西,需要写shell脚本,但在shell脚本里需要调用python并得到变量值,网上找了很多都是python调shell的,最后请教了一下郭总 知道了sys.argv的用法后才搞定了,在此感 ...

  9. 程序员如何学习更好的知识_如何保持学习并成为更好的程序员

    程序员如何学习更好的知识 by Kevin Gardner 凯文·加德纳(Kevin Gardner) 如何保持学习并成为更好的程序员 (How to keep learning and become ...

最新文章

  1. 【codeforces 812C】Sagheer and Nubian Market
  2. Maven---学习心得---maven的配置文件settings.xml
  3. C#生成带Logo二维码
  4. body里写注释 postman_HTTP Status 415 – Unsupported Media Type(使用@RequestBody后postman调接口报错)...
  5. 专科 java转go 翱翔之路(一)基础语法:变量声明,匿名函数,结构体,函数,map
  6. iOS下载大文件原理解析一
  7. JavaScript----BOM(浏览器对象模型)
  8. 使用JBoss EAP 7的HTTP / 2
  9. mysql-安装报错计算机中丢失MSVCR100.dll文件丢失
  10. a lt b lt c c语言描述,《数据结构与算法分析――c语言描述》读后笔记 4
  11. SilverLight中的基本图形(转)
  12. Android程序中如何启动浏览器
  13. CSDN博客QQ加群、微信
  14. 计算机专业秃顶图片,大学被叫惨的三大专业,计算机秃顶是常事,医学专业这个就惨了...
  15. idea @Autowired 飘红
  16. Windows服务器忘记密码后找回方法
  17. 【Java】三款经典游戏 java版本(开源)提升代码水平
  18. [原文] Application of Polarization Imaging Techniques in Brain Tumor Detection 偏振成像技术在脑肿瘤检测中的应用
  19. 手动搭建redis集群
  20. pytorch和tensorflow中实现SMU激活函数

热门文章

  1. IntelliJ IDEA 2020.2.1 发布,Lombok插件可能被官方支持
  2. Lambda表达式很鸡肋?它到底有何用呢?
  3. DD来拜年送红包啦!
  4. 无卷积骨干网络:金字塔Transformer,提升目标检测/分割等任务精度(附源代码)
  5. python meshgrid()理解
  6. PaddleHub 视频口罩检测
  7. 车辆检测,车牌识别WPOD-NET OCR-Net
  8. 目标检测算法综述 | 基于候选区域的目标检测器 | CV | 机器视觉
  9. make for arm
  10. 如何在 CentOS 上启用 软件集 Software Collections(SCL)