sed详解---进阶篇(一)
来源:互联网 发布:手游多开软件 编辑:程序博客网 时间:2024/06/09 18:56
前言
与grep一样,sed也支持特殊元字符,来进行模式查找,替换,不同的是,sed使用的正则表达式是括在斜杠线“/”之间的模式
如果要把正本表达式分隔符”/”改为另一个字符,比如o,只要在这个字符前加一个反斜线,在字符后跟上正则表达式,再跟上这个字符即可,例如:sed -n ‘\o^Myop’ datefil
正则表达式
模式空间保持空间(高级用法,难度较高)
sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed -command(sed命令)”就一条jiezheyi条处理,直到脚本执行完毕,然后该行被输出,模式空间被清空,然后,再重复刚才的动作,文件中的新的一行被读入,直到文件处理完毕
工作流程图如下:
一般情况下,数据处理只用模式空间(pattern space),按照上述逻辑可以完成主要任务,但是某些时候,通过使用保持空间(hold space),还可以带来意想不到的效果
模式空间:可以想成工厂里的流水线,数据直接在上面进行处理
保持空间:可以想象成仓库,在我们进行数据处理的时候,作为数据的暂存区域
正常情况下,如果不显式使用某些高级命令,保持空间不会用到
高级命令:
+g: [address,[,address]]g,将hold space的内容拷贝到pattern space,原来pattern space中的内容清除
+G: [address,[,address]]G,将hold space中的内容append到pattern space \n之后
+h: [address,[,address]]h,将pattern space中的内容拷贝到hold space中,原来hold space中的内容被清除
+H: [address,[,address]]H,将pattern space中的内容append到hold space \n之后
+d: [address,[,address]]d,删除pattern space中的所有行,并读取新的一行到pattern中
+D: [address,[,address]]D,删除multiline pattern中的一行,不读入下一行
x:交换模式空间和保持空间的内容
见如下例子
1.给每行结尾添加一个空行
2.用sed 模拟除tac的功能(倒序输出)
1!G表示第一行不执行G,$!d表示最后一行不删除,距离流程可以参照上面的指令动手画一遍
3.追加匹配行到文件结尾
4,行列转化
- sed详解---进阶篇(一)
- Linux sed 命令详解(一)
- Glide进阶详解(一)
- 个人学习笔记--sed命令(进阶篇)
- Android进阶之(Service详解一)
- sed详解---基础篇
- Linux sed命令(二)进阶
- sed 学习一 (替换)
- 学习笔记-sed(一)
- sed学习实例(一)
- sed高级编程(一)
- sed命令详解(下)
- sed命令详解(下)
- sed详解(补充中)
- 【.NET线程--进阶(一)】--线程方法详解
- Android进阶笔记:AIDL内部实现详解 (一)
- Android进阶——万能的RecycleView详解(一)
- JAVA进阶学习-多线程基础详解(一)
- c++(5)
- 动态分配一维数组、二维数组!
- 欢迎使用CSDN-markdown编辑器
- C语言32个关键字
- logger为啥要static final
- sed详解---进阶篇(一)
- 我的 Hello World
- java常用类-Object类、Math类
- idea Maven项目的搭建 无法创建java类的解决方案
- Leetcode 524. Longest Word in Dictionary through Deleting
- OpenAL+VS2013配置过程及常见错误总结
- Android 用友盟整的第三方的QQ登录
- 我的第一篇csdn博客
- 痛苦的拔牙