shell学习之-sed用法解析_【Linux】shell学习之sed
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相关推荐
- python中continue用法案例_记录今天学习python中for与while循环针对break和continue的用法...
python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带 ...
- linux shell 解析文本文件,linux Shell 全解析
Shell 函数Shell 字符串 单引号 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: 单引号字串中不能出现单引号(对单引号使用转义符后也不行). 双引号 双 ...
- linux shell 函数 格式化,速查笔记(linux shell编程)
零.shell中的内部变量: 1. $?: 表示shell命令的返回值. 2. $$: 表示当前shell的pid. 3. $!: 最后一个放入后台作业的PID值. 4. $0: ...
- linux sed工具,玩转Linux - 神级工具 sed awk
简介 本文主要介绍 Linux 系统的两个神级工具:sed 和 awk ,他们是Linux高手们必备的技能,很值得我们去研究的东西. 这里是我在网上书上收集的相关资料,因为这两个工具很有名也很重要,所 ...
- 深度学习将灰度图着色_通过深度学习为视频着色
深度学习将灰度图着色 零本地设置/ DeOldify / Colab笔记本 (Zero Local Setup / DeOldify / Colab Notebook) "Haal Kais ...
- 基于几何学习图像的三维重建发展_基于深度学习的三维重建算法:MVSNet、RMVSNet、PointMVSNet、Cascade系列...
欢迎关注微信公众号"3D视觉学习笔记",分享博士期间3D视觉学习收获 MVSNet:香港科技大学的权龙教授团队的MVSNet(2018年ECCV)开启了用深度做多视图三维重建的先河 ...
- shell学习之-sed用法解析_Shell脚本之sed的使用
1.sed命令:主要作用是查找:新增 删除 和修改替换. user.txt daokr#cat user.txt ID Name Sex Age zhang M 19 wang G 20 cheng ...
- shell调用python获取返回值_[linux的shell脚本调用python脚本的返回值][shell调python][ubuntu的shell调用python脚本得到返回值]...
最近搞个东西,需要写shell脚本,但在shell脚本里需要调用python并得到变量值,网上找了很多都是python调shell的,最后请教了一下郭总 知道了sys.argv的用法后才搞定了,在此感 ...
- 程序员如何学习更好的知识_如何保持学习并成为更好的程序员
程序员如何学习更好的知识 by Kevin Gardner 凯文·加德纳(Kevin Gardner) 如何保持学习并成为更好的程序员 (How to keep learning and become ...
最新文章
- 【codeforces 812C】Sagheer and Nubian Market
- Maven---学习心得---maven的配置文件settings.xml
- C#生成带Logo二维码
- body里写注释 postman_HTTP Status 415 – Unsupported Media Type(使用@RequestBody后postman调接口报错)...
- 专科 java转go 翱翔之路(一)基础语法:变量声明,匿名函数,结构体,函数,map
- iOS下载大文件原理解析一
- JavaScript----BOM(浏览器对象模型)
- 使用JBoss EAP 7的HTTP / 2
- mysql-安装报错计算机中丢失MSVCR100.dll文件丢失
- a lt b lt c c语言描述,《数据结构与算法分析――c语言描述》读后笔记 4
- SilverLight中的基本图形(转)
- Android程序中如何启动浏览器
- CSDN博客QQ加群、微信
- 计算机专业秃顶图片,大学被叫惨的三大专业,计算机秃顶是常事,医学专业这个就惨了...
- idea @Autowired 飘红
- Windows服务器忘记密码后找回方法
- 【Java】三款经典游戏 java版本(开源)提升代码水平
- [原文] Application of Polarization Imaging Techniques in Brain Tumor Detection 偏振成像技术在脑肿瘤检测中的应用
- 手动搭建redis集群
- pytorch和tensorflow中实现SMU激活函数
热门文章
- IntelliJ IDEA 2020.2.1 发布,Lombok插件可能被官方支持
- Lambda表达式很鸡肋?它到底有何用呢?
- DD来拜年送红包啦!
- 无卷积骨干网络:金字塔Transformer,提升目标检测/分割等任务精度(附源代码)
- python meshgrid()理解
- PaddleHub 视频口罩检测
- 车辆检测,车牌识别WPOD-NET OCR-Net
- 目标检测算法综述 | 基于候选区域的目标检测器 | CV | 机器视觉
- make for arm
- 如何在 CentOS 上启用 软件集 Software Collections(SCL)