1 Sed语法及举例

在实际使用sed过程中经常使用字符串的替换、删除、查找等操作。Linux中的编辑器Vi、GVIM、emacs等都可以进行上述操作,但是大量进行操作的时候,效率很低。

地址参数 {
命令参数1
命令参数2
...
}
**对于符合地址参数的数据,依次执行命令参数1,命令参数2**

1.1 替换文件中的数据

  • 表示字符串替换的参数为s;
  • 表示替换数据行、数据区的参数为c
  • \表示换行

例1

将文件中含有machine字符串的数据行中的phi替换为beta字符串

# /machine/  -- 匹配所有machine所在行
# s -- 表示替换
sed -e '/machine/s/phi/beta/g' input.dat

例2

将文件中第5行数据替换为句子 Those who in quarrels interpose,mnust often wipea blood nose.

sed -e '5c \
Those who in quarrels interpose,mnust often wipea blood nose.'
input.dat

例3

将文件中的1-100行替换为下面两行

# 替换内容
How are you?
data be deleted sed -e '1,100c \
How are you? \
data be deleted !
' input.dat

1.2 移动文件中的数据

sed中的hold space可以暂存编辑中的数据,用函数参数w将文件数据搬动到文件内存储,或者使用函数参数r将文档中的内容搬到文件内

Hold space是sed用来暂存pattern space内数据的缓存器,当sed执行函数参数h,H时会将pattern space中的资料暂存到hold space;执行函数参数x,g,G时会将暂存的资料取到pattern space。

例1

将文件中前100数据,搬到文件第300行之后。

sed -f mov.scr input.dat

# scr中的内容
1,100 {
H
d
}
300G

其中

1,100{
H
d
}

表示先将前100行的数据,先存储到hold space(H),然后将pattern space中的内容进行删除。

300G

300G表示,将hold space中的内容,添加到pattern space(G)的第300行输出

例2

将文件中含有phi字符串的行,搬运至mach.inf文件中存储。

# w 表示将文档搬运到另一个文档进行存储
sed -e '/phi/w mach.inf' file

例3

将mach.inf文档中的内容,搬至文件中含beta字符串的数据行

# r 表示将一个文件搬运到另一个文件
sed -e '/beta/r mach.inf' file

1.3 删除文件中的数据

使用函数参数d 或者是 D可以进行删除

例1

删除文档中所有的空白行

# N 表示将空白行的下一行资料添加至pattern space
# /^$/D 表示删除空白行
sed -e '/^$/{
N
/^$/D
}' 文档

1.4 查找文件中的数据

sed -f gp.scr file

/omega/b
N
h
s/.*\n/
/omega/b
g
D

03-Sed基础语法及例子的更多相关文章

  1. sed基础语法

    sed 太强大了 参考博客如下:https://www.cnblogs.com/ctaixw/p/5860221.html sed: Stream Editor文本流编辑,sed是一个“非交互式的”面 ...

  2. mobx学习笔记03——mobx基础语法(decorator修饰器)

    在声明阶段实现类与类成员注解的一种语法. function log(target){ const desc = Object.getOwnPropertyDescriotors(target.prot ...

  3. 025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构

    025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构 本文知识点:Java中的if条件结构语句 关系运算符回顾 生活中根据条件进行判断采取不同操作 ...

  4. 009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量?

    009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量? 什么是变量? 形象化的生活中的例子理解什么是变量以及变量的三个元素 我们可以根据客人要求 ...

  5. 071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法

    071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法 本文知识点:综合案例-数组移位-显示数组当中所有元素 ...

  6. 056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用

    056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用 本文知识点:数组的实际应用 程序开发中如何应用数组? 程序代码及其运行结果: 不同数据类 ...

  7. 041 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 03 案例演示while循环的使用——求1到5的累加和

    041 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 03 案例演示while循环的使用--求1到5的累加和 本文知识点:案例演示while循环的使用1 ...

  8. 036 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 03 嵌套if结构

    036 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 03 嵌套if结构 本文知识点:Java中的嵌套if结构 什么是嵌套if结构? 概念: 嵌套if结构 ...

  9. 033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结

    033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结 本文知识点:运算符和表达式知识点总结 前面学习的几篇文都是运算符和表达式相关的知 ...

  10. 032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题

    032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例--闰年问题 本文知识点:运算符和if-else条件语句的综合案例 ...

随机推荐

  1. 怎样在GitHub上建立仓库、以及怎样实现分支代码的合并。保姆级别的教程

    GitHub官网地址:https://github.com/ 注意:前提是已经注册了GitHub 文章目录 第一步:创建一个新的仓库 第二步.创建一个分支 第三步.编辑和发布更改的内容 第四步.拉取请 ...

  2. 3.pytest断言assert

    pytest使用的python自带的断言assert关键字,和unittest封装的assert断言不一样 原理:用来测试某个断言条件,如果断言条件为True,则程序将继续正常执行:但如果断言条件为假 ...

  3. vue2和vue3组合使用教程地址

    https://cn.vuejs.org/guide/essentials/watchers.html#eager-watchers

  4. 第一百零六篇:变量的不同声明(var,let和const的不同)

    好家伙,JS基础接着学, 本篇内容为<JS高级程序设计>第三章学习笔记 1.变量 ECMAScript 变量是松散类型的,意思是变量可以用于保存任何类型的数据. (确实松散,不像C或C++ ...

  5. MindStudio模型训练场景精度比对全流程和结果分析

    摘要:MindStudio是一套基于华为昇腾AI处理器开发的AI全栈开发平台 本文分享自华为云社区<MindStudio模型训练场景精度比对全流程和结果分析>,作者:yd_24730208 ...

  6. JavaScript 实现地图搜索功能

    需求:输入框输入地址点击查询,查询结果在地图定位到查询位置,显示查询位置的经纬度 <html xmlns="http://www.w3.org/1999/xhtml"> ...

  7. SketchUp2020免费中文完整版官网2021教程模型库下载

    SketchUp2022 WIN10 64位安装步骤: 1.先使用"百度网盘客户端"下载SU22_CN_x64安装包到电脑磁盘里,并鼠标右击进行解压缩,然后找到SketchUpPr ...

  8. Go语言核心36讲35

    到目前为止,我们已经一起学习了Go语言标准库中最重要的那几个同步工具,这包括非常经典的互斥锁.读写锁.条件变量和原子操作,以及Go语言特有的几个同步工具: sync/atomic.Value: syn ...

  9. 关于Linux mint更换中文字体后全局楷体修改办法

    问题描述 linux mint 更新中文字体后,全局都变成了楷体,浏览器里面,终端里(英文字体可以在终端设置里面修改),这里指的是中文字体,而英文字体可以在 linux mint 设置 - 选择字体 ...

  10. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(35)-Fiddler如何抓取微信小程序的包-下篇

    1.简介 通过前边和宏哥的学习,我们了解到Android 7.0 之后增加了对第三方证书的限制,抓包工具(charles.fiddler等)提供的证书都无法通过校验,也就无法抓取HTTPS请求了,对测 ...