05-Sed操作参数(II)
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)的更多相关文章
- Shell 05 Sed
一.基本用方法 1.sed文本处理工具的用法 用法1:前置命令 | sed [选项] '条件指令' 用法2:sed [选项] '条件指令' 文件.. .. 注意:没有条件时候,默认所有条件, ...
- 作业成绩 final-review 20161201-1203 15:05
final-review阶段,20161201-20161203 15:05 final 评论II截止 20161204 09:00 申诉截止时间 20161207 12:00,微信联系杨贵福. 凡描 ...
- sed命令基本用法
sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑sed 适用于以下三种场合:编辑相对交互式文本编辑器而言太大的文件编辑命令太复杂,在交互式文本编辑器中难以输入的情况对文本扫描一遍,但是 ...
- 分享一例脚本发版和tomcat重启脚本
线上有个网站业务部署在tomcat上,由于频繁上线修改,需要经常启动tomcat.tomcat服务自带的bin下没有重启脚本,下面分享一例脚本发版和tomcat重启脚本: 1)现将业务代码从svn里下 ...
- CiteSeer统计的计算机领域的期刊和会议的影响因子(2005)
产生自CiterSeer 2005数据库,实际的影响因子可能更高.仅供参考使用.真实的IF还需去官网查看 . OSDI: 3.31 (top 0.08%) . USENIX Symposium on ...
- Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)
Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...
- 代码随想录第八天 |344.反转字符串 、541. 反转字符串II、剑指Offer 05.替换空格 、151.翻转字符串里的单词 、剑指Offer58-II.左旋转字符串
第一题344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这 ...
- 【遍历二叉树】05二叉树的层次遍历II【Binary Tree Level Order Traversal II】
就把vector改成用栈类存放层次遍历的一层的序列 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- Linux查找命令:grep,awk,sed
grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...
- A Simple OpenGL Shader Example II
A Simple OpenGL Shader Example II eryar@163.com Abstract. The OpenGL Shading Language syntax comes f ...
随机推荐
- Vue学习之--------计算属性(2022/7/9)
文章目录 1.计算属性 1.1 计算属性实现 1.1.1 基础知识 1.1.2 代码实例 1.1.3 测试效果 1.2 计算属性简写 1.2.1 简写代码 1.3 使用插值语法实现 1.3.1 代码实 ...
- Linux进程间通信(一)
进程间通信 概念:进程是一个独立的资源分配单位,不同进程之间有关联,不能在一个进程中直接访问另一个进程的资源. 进程和进程之间的资源是相互独立的,一个进程不能直接访问另外一个进程的资源,但是进程和进程 ...
- Python基础之函数:2、globlal与nonlocal和闭包函数、装饰器、语法糖
目录 一.global与nonlocal 1.global 2.nonlocal 二.函数名的多种用法 三.闭包函数 1.什么是闭包函数 2.闭包函数需满足的条件 3.闭包函数的作用 4.闭包函数的实 ...
- 镜像制作工具diskimage-builder介绍
简介 diskimage-builder(简称dib)是一款用于构建系统镜像的工具,它被设计用于OpenStack的TripleO项目,支持qocw2.vhd.raw等主流镜像格式. 在众多系统镜像构 ...
- 嵌入式-C语言基础:二维数组
二维数组的每个元素都是一个一维数组,例如int arr[2][3]={{1,2,3},{4,5,6}}; 下面通过几个例子来对二维数组进行深入了解:二维数组可以看作是一个父数组,他的每个元素都是一个一 ...
- 2022春每日一题:Day 33
题目:[USACO 6.1.3] Cow XOR 没找到这题具体网址,这个题就是求最大异或区间(总长度尽量小,右端点尽量大) 嗯很显然一个[l,r]的异或和=s[r]s[l-1],那么现在有了优秀的n ...
- Day17.1:静态与非静态的详解
静态与非静态 静态方法--类方法 是以static为关键词,从属于类,与类共生 public class Students{//class修饰的是一个类,所以这是一个学生类 public static ...
- GeoServer 2.15.0 开启跨域设置
GeoServe老版本可能开启跨域设置比较麻烦,但2.15.0版本还是比较简单的. 首先找到安装目录下的 webapps\geoserver\WEB-INF\web.xml 文件,打开进行编辑,建议编 ...
- Springboot 2.3.1配置拦截器遇到的坑
1.多个配置类继承WebConfigureSupport或实现WebConfigure接口导致拦截器失效 2.拦截器中的bean无法正常注入,SpringBoot项目的Bean装配默认规则是根据App ...
- 数电第三周周结_by_yc
主要内容:Modelsim和Quartus的使用坑点 Modelsim: 新建Project: 在每新建一个verilog文件时,均需要添加一project的独立路径,否则不同文件之间会相互影响! ...