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. 创建第一个springboot项目、用springboot实现页面跳转、@Controller和@RestController的区别

    文章目录 一.第一个spring boot项目 二.spring boot跳转到指定页面 三.怎样将后台的信息传递到前台 四. @Controller和@RestController的区别? 一.第一 ...

  2. Linux进程间通信(二)

    信号 信号的概念 信号是Linux进程间通信的最古老的一种方式.信号是软件中断,是一种异步通信的方式.信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某个突发事件. 一旦产生信号 ...

  3. 在不受支持的 Mac 上安装 macOS Ventura、Monterey、Big Sur (OpenCore Legacy Patcher)

    请访问原文链接:https://sysin.org/blog/install-macos-13-on-unsupported-mac/,查看最新版.原创作品,转载请保留出处. 作者主页:www.sys ...

  4. HTML5+CSS3常见布局方式

    1.等高布局 1.1 代码 等高布局是指子元素在父元素中高度相等的布局方式 <div class="father"> <div class="f1&qu ...

  5. 京东云开发者|mysql基于binlake同步ES积压解决方案

    1 背景与目标 1.1 背景 国际财务泰国每月月初账单任务生成,或者重算账单数据,数据同步方案为mysql通过binlake同步ES数据,在同步过程中发现计费事件表,计费结果表均有延迟,ES数据与My ...

  6. jmeter执行报错:java.lang.UnsupportedClassVersionError解决办法

    做个记录. 问题记录: jmeter版本:5.4.1 本地Java版本:1.8.0_151 执行jmeter,报错: 2022-10-14 12:06:27,372 ERROR o.a.j.JMete ...

  7. 😊SpringBoot 整合 Elasticsearch (超详细).md

    SpringBoot 整合 Elasticsearch (超详细) 注意: 1.环境搭建 安装es Elasticsearch 6.4.3 下载链接 为了方便,环境使用Windows 配置 解压后配置 ...

  8. 嵌入式-C语言基础:指针

    指针就是地址,变量的值可以通过两种方式访问,一个是通过变量名,一个是通过地址访问. 从而引出一个问题,即什么是指针变量?整型(字符)变量就是存放整形(字符)的变量,指针变量就是存放指针的变量,也就是存 ...

  9. Go语言核心36讲46

    我们今天要讲的是os代码包中的API.这个代码包可以让我们拥有操控计算机操作系统的能力. 前导内容:os包中的API 这个代码包提供的都是平台不相关的API.那么说,什么叫平台不相关的API呢? 它的 ...

  10. 【云原生 · Docker】Docker虚拟化技术

    1.Docker入门简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化. 容器是完全使用沙箱 ...