【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。
注意两者区别。
【Linux】shell学习之sed的更多相关文章
- 【转】十分有用的linux shell学习总结
在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们 数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...
- Linux shell 学习
·详细介绍Linux shell脚本基础学习(一) ·详细介绍Linux shell脚本基础学习(二) ·详细介绍Linux shell脚本基础学习(三) ·详细介绍Linux shell脚本基础学习 ...
- linux shell 修改文本 sed
linux shell 修改文本echo [root@DSI tmp]# echo 'yhqt1 test1' > test1.txt [root@DSI tmp]# cat test1.txt ...
- linux shell学习之shell流程控制
在linux shell编程中,流程控制结构与语句,也算是shell脚本中的重点了,不了解的朋友,跟随脚本小编一起来学习下吧. linux控制流结构学习. 一,shell控制流结构 1.控制结构 ...
- Linux Shell 学习笔记 一 目录结构
以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin 存放普通用户使用的命令 /sbin 存放管理员可以执行的命令 /home ...
- linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- Linux & Shell 学习笔记【1/2】
因为工作上的需要,花了些许时间去熟悉学习Linux和Shell,现在也花点事件在此记录一下以加强巩固学习的内容吧.学的不算深入,所以都是一些比较junior的内容. 在下一篇随笔会详述之前写的一个用于 ...
- linux shell 学习笔记--内部命令学习
.基本命令 新手必须要掌握的初级命令 ls 基本的列出所有文件的命令.但是往往就是因为这个命令太简单,所以我们总是低估它.比如 ,用 -R 选项,这是递归选项,ls 将会以目录树的形式列出所有文件, ...
- Linux Shell 学习笔记
2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是 ...
随机推荐
- FI CO 常用表
FI CO 常用表 最近写FICO的报表写得有点多,许多Table记不住,用F1查找又有点费事,不如把表单写下来,以后用到,直接在这上面找得了. 1,账目表主数据 SKA1 SKB1 S ...
- 用tsMuxeR GUI给ts视频添加音轨
收藏比赛的都应该知道,高清的直播流录制了后一般是ts或者mkv封装,前者用tsMuxeR GUI可以对视频音频轨进行操作,后者用mkvtoolnix,两者都是无损操作. 至于其他格式就不考虑了,随便用 ...
- Python安装第三方库的安装技巧
电脑:Windows10 64位. Python IDE 软件:JetBrains PyCharm Community Edition 2018.1.3 x64 Python version : Py ...
- kbengine学习2 创建项目
官方文档https://www.comblockengine.com/docs/1.0/get-started/createproject/ 1.kbe服务器端 1.1 复制出一个assets文件夹, ...
- 使用@JsonFormat引起的时间比正常时间慢8小时解决方法
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
- 解码字符串 Decode String
2018-11-14 17:56:12 问题描述: 问题求解: 方法一.递归求解 最直观的解法就是递归来求了,并且很显然的这个问题可以使用递归来进行求解. public String decodeSt ...
- Eclipse安装lombok
下载lombok 下载地址:https://projectlombok.org/downloads/lombok.jar 或者访问官网下载 https://projectlombok.org/ 安装 ...
- 中文情况下,Eclipse的最好字体。
个人喜欢的是 Microsoft YaHei Mono 了. 下面的文章喜欢的是 YaHei Consolas Hybrid. 字体安装方法的话,拷贝到 widnows\fonts目录就行. http ...
- 转录调控实战 | 一文解决转录调控问题 | chIP-seq | ATAC-seq
做生物的想发文章怎么办?转录调控来解析(huyou)! 最简单的情形: 1. 我在研究一个非常重要的基因A,功能已经做得差不多了,现在想深挖,第一步就是想知道哪个转录因子调控这个基因A: 2. 我发现 ...
- C# 编写WCF简单的服务端与客户端
http://www.wxzzz.com/1860.html Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Win ...