1 Sed操作参数

1.1 q

参数q表示跳离sed

[address1]q
  • sed执行跳离动作的时候,会停止输入pattern space数据,同时停止数据送到标准输出文件。

例1

对于文件执行script_file内的编辑指令,除非遇到“Linux”字符串

  • 无论script_file内是何种指令,使用者只要在命令行上用指令“/Linux/q”,参数q会强迫sed遇到“Linux”时做跳离动作。
sed -e '/Linux/q' -f script_file input.dat

1.2 =

参数=表示印出资料的行数

[address1,address2]]=

# 显示行号和内容
sed -e '=' input.dat # 文件内容是
The UNIX
Operating System # 输出内容是
1
The UNIX
2
Operating System

1.3 #

#用于表示注释

1.4 N

N 表示添加下一条数据在pattern space内,sed在执行时,将下一行数据读入并添加在pattern space内,数据间的换行使用\n表示。使用N相当于每两行进行处理依次,依次向下进行。

n 表示读入下一行,覆盖前一行。

[address1,address2]]N

# 文件内容
The Unix
Operating System #执行
sed -e 'N' -e's/\n/ /' input.dat # result
The Unix Operating System

1.5 D

参数D表示删除pattern space中第一行数据

[address1,[address2]]D
  • pattern space中只有一行数据的时候,D与d的功能是相同的。
  • 当pattern space内有多行数据的时候,D只删除第一行,d则全部删除
  • D表示执行删除后,pattern space内不添加下一行数据,将剩下的数据重新执行sed script;
  • d则是读入下一行后执行sed script

1.6 P

参数P表示打印出pattern space内第一行资料。

[address1,[address2]]P

例1

输出input.dat文件内奇数行资料。假设input.dat文档如下:

The
Unix
System # 执行下列命令
sed -e 'N' -e 'P' input.dat #result
The
System

1.7 h

参数h表示暂存pattern space的资料至hold space

[address1,address2]]h
  • sed执行暂存动作时,会覆盖掉hold space内原来的数据。当sed全部执行结束时,hold space内数据会自动清除。

1.8 H

H与h区别是,sed执行h的时候,数据覆盖掉hold space内原来的内容,H会添加hold space原来的数据之后。

H h都是向hold space中添加数据。

1.9 g

参数g表示将hold space内的资料放回pattern space内。

[address1,[address2]g
* g会覆盖pattern space中的原有的数据

1.10 G

G与g都是将hold space中的数据放回pattern space,G是在原有的pattern space原有的数据之后。

1.11 X

参数x表示交换pattern space和hold space中的内容

[address1,[address2]]x
sed -e '1h' -e '3x' input.dat
# 1h--将第一行内容放入hold space
# 3x--当第三行数据出现在pattern space的时候,使用hold space中的数据替换第三行数据
# 也就是用第一行替换第三行

1.12 b、:lable

在sed_script中

.
.
.
编辑命令m1
:记号
编辑命令m2
.
.
.
# 参数与b,在script_file内配合的情况
[address1.[address2]]b[记号]
  • 当sed执行至指令[address1,[address2]]b[记号]时,如果pattern space中的数据复合地址参数,则sed将下一个执行的branch至:记号设定的标记处。也就是由m2......进行执行编辑。
  • b后面没有记号的时候,则sed将下一个执行的指令branch到script_file的最后。

例1

将input.dat文件内数据行的开头字母重复打印40次,假设input.dat文档中的内容如下:

A
B
C
sed -e '{
:pl #:pl与b pl组成了一个循环
/A/s/A/AA/
/B/s/B/BB/
/C/s/C/CC/
/[ABC]\{40\}/b # /[ABC]\{40\}/b 表示循环终止条件
b pl
}' input.dat

05-Sed操作参数(II)的更多相关文章

  1. Shell 05 Sed

    一.基本用方法 1.sed文本处理工具的用法 用法1:前置命令 | sed  [选项]  '条件指令' 用法2:sed  [选项]  '条件指令'  文件.. .. 注意:没有条件时候,默认所有条件, ...

  2. 作业成绩 final-review 20161201-1203 15:05

    final-review阶段,20161201-20161203 15:05 final 评论II截止 20161204 09:00 申诉截止时间 20161207 12:00,微信联系杨贵福. 凡描 ...

  3. sed命令基本用法

    sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑sed 适用于以下三种场合:编辑相对交互式文本编辑器而言太大的文件编辑命令太复杂,在交互式文本编辑器中难以输入的情况对文本扫描一遍,但是 ...

  4. 分享一例脚本发版和tomcat重启脚本

    线上有个网站业务部署在tomcat上,由于频繁上线修改,需要经常启动tomcat.tomcat服务自带的bin下没有重启脚本,下面分享一例脚本发版和tomcat重启脚本: 1)现将业务代码从svn里下 ...

  5. CiteSeer统计的计算机领域的期刊和会议的影响因子(2005)

    产生自CiterSeer 2005数据库,实际的影响因子可能更高.仅供参考使用.真实的IF还需去官网查看 . OSDI: 3.31 (top 0.08%) . USENIX Symposium on ...

  6. Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)

    Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...

  7. 代码随想录第八天 |344.反转字符串 、541. 反转字符串II、剑指Offer 05.替换空格 、151.翻转字符串里的单词 、剑指Offer58-II.左旋转字符串

    第一题344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这 ...

  8. 【遍历二叉树】05二叉树的层次遍历II【Binary Tree Level Order Traversal II】

    就把vector改成用栈类存放层次遍历的一层的序列 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  9. Linux查找命令:grep,awk,sed

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

  10. A Simple OpenGL Shader Example II

    A Simple OpenGL Shader Example II eryar@163.com Abstract. The OpenGL Shading Language syntax comes f ...

随机推荐

  1. 九、kubernetes命令行工具kubectl

    为了方便在命令行下对集群.节点.pod进行管理,kubernetes官方提供了一个管理命令:kubectl kubectl作为客户端CLI工具,可以让用户通过命令行对Kubernetes集群进行操作. ...

  2. numpy常用知识点备忘

    常用函数 a.max(axis=0) a.max(axis=1) a.argmax(axis=1) : 每列的最大值(在行方向找最大值).每行的最大值(在列方向找对大致).最大值的坐标 sum()求和 ...

  3. Atlas人工智能基础知识

    目录 一.  AI基本概念 1.人工智能是什么 2.人工智能.机器学习.深度学习的关系是什么 2.监督学习.无监督学习.半监督学习和强化学习是什么 3.什么是模型和网络 4.什么是训练和推理 5.什么 ...

  4. yum的$releaser与$basearch

    最近配置centos 的yum 源时,想要配置一个通配的yum源,注意到发行的网络yum源的url地址中通常有两个变量 https://vault.centos.org/$releaser/cloud ...

  5. Linux系统安装 tftp服务 NFS服务

    安装tftp服务 安装 sudo apt-get install tftp-hpa tftpd-hpa 配置文件 # /etc/default/tftpd-hpa TFTP_USERNAME=&quo ...

  6. c3 linearization详解

    MRO MRO 全称方法解析顺序(Method Resolution Order),在多重继承和多继承存在的时候,寻找属性及方法的顺序. 深度优先(DFS)与广度优先(BFS) python2 所用的 ...

  7. 关于linux mint新增加的鼠标样式的示例图片不能正确显示的解决办法

    前言 我相信你在linux mint 做鼠标主题美化的时候一定遇到过这样的问题 没错!!! 下载的鼠标的主题的示例图片不能正确显示,当然这样虽然不影响正常的鼠标主题更换使用,但是对于我这种强迫症来说简 ...

  8. Oracle 一对多将多行数据整理为一行

    在开发中一对多的关系经常用到,昨天遇到一个客户问题,要求将所有反馈任务的信息整理为一行展示并导出excel. 我数据库对应关系:通任务task对应feedback表多个反馈,也就是说每个任务都有很多条 ...

  9. Docker定时删除none镜像

    在使用docker的时候会产生none镜像文件,偶尔没什么,但是比如使用了自动化部署工具那就不一样了,一天没准就上百个none镜像了,非常消耗资源,所以需要定时清理 删除 none 镜像命令 dock ...

  10. odoo关于计算字段store=True时导致的安装/更新时间较长问题的解决方案

    Odoo安装/更新模块原理 Odoo每次安装/更新模块时,会进行以下几步处理: 1.判断是否需要创建表,如果需要创建且表不存在,则进行表的创建(不进行字段的创建): 2.获取该表中已经存在的字段: 3 ...