04-Sed操作参数
1 Sed操作参数
1.1 s--替换
s表示替换(substitute)文件内的字符串。
[address1],[address2]s/pattern/replacement/[flag]
# s/pattern/replacement/[flag]
# pattern--是regular expression(正则表达式)字符串。表示文件中要被替换的字符串。
# replacement:一般字符串
注意:
- replacement中出现一些字符有特殊意义
# &--表示其前面pattern字符串
# 下面的例子中&表示前面的pattern,就是test
# 结果是将test替换为test my car
sed -e 's/test/& my car/' file
# 使用()进行分组,在使用()和[]的时候需要加\ \(\)
# \n--表示第n组,第几个\(xxx\)中间的内容
# 结果是将test my car 替换为[my car test]
sed -e 's/\(test\)\(my\)\(car\)/\[\2\3\1\]/' file
- \1--表示test
- \2--表示my
- \3--表示car
- ( \)--\的作用是还原特殊字符的含义
- \ -- 用在语句最后表示换行
- flag--用于控制一些替换的情况
| flag | 含义 |
|---|---|
| g | 替换所有的匹配字符 |
| m(十进制数) | 替换行内第m个合适字符串 |
| p | 替换第一个匹配字符串后,将数据标准输出 |
| w wfile | 替换第一个匹配字符串后,输出到wfile文档中,wfile不存在会进行创建 |
| 不存在 | 替换行内第一个字符串 |
例1
替换input.dat中1996字符串替换为1997,同时将这些数据存入ycar97.dat
sed -e 's/1996/1997w ycar97.dat' input.dat
1.2 d
参数d表示删除数据行
[address1],[address2]d
- 参数d最多有两个地址进行配合执行
- 将pattern space内匹配的数据进行删除,将下一行数据进行读入pattern space
1.3 a
参数a表示将数据添加到文件中。
[address1]a\使用者所输入的数据
- a--最多于一个地址参数配合使用
- --表示此行结束,用户输入的数据从下一行开始,如果数据超过一行,每行的结尾加 \
- 当pattern space内数据输出后,sed跟着输出使用者所输入的数据
例1
添加“多任务操作系统”在含有Unix字符串的数据行后
sed -e '/Unix/a \
多任务操作系统
'input.dat
1.4 i
参数 i 表示将数据插入到文件中
[address1]i\使用者所输入的数据
- i--最多与一个地址参数配合。
- -- 表示当前行结束
- 在pattern space内输出之前,sed先输出使用者所输入的数据
例1
将“文章版权属于中央研究院”,插入到input.dat文档中“院长:xxx”的数据行之前
sed -e '/院长:xxx/i\
文章版权属于中央研究院
' input.dat
1.5 c
参数c表示改变(change)文件中的数据
[address1],[address2]c\ 使用者所输入的数据
- sed在进行pattern space内数据输出时,sed改变他成为使用者所输入的数据
1.6 p
参数p表示打印数据
[address1],[address2]p
- sed执行打印动作--sed拷贝一份pattern space内容至标准输出文档
1.7 l
参数l,除了可以将文件中nonprinting character(不可打印字符退格、另起一行、报警)以ascii码列出,其余均与参数p的作用相同。
例1
将input.dat文档中的^[以ascii码的方式印出
# 原文
The Great ^[is a movie starring Steve McQueen.
sed -e 'l' input.dat
#输出
The Great \003 is a movie starring Steve McQueen.
The Great is a movie starring Steve McQueen.
1.8 r
参数r表示读入(read)其他文档的内容到当前文档中
[address1]r 其他文件名
- r与其他文档之间只能有一个空格
- sed在pattern space中的数据输出后,sed读出其他文档的内容跟着进行输出。当其他文档的内容不存在时,sed照样执行其他指令而不会产生任何错误信息。
1.9 w
参数w表示将文档的内容写到(write)其他文档中
[address1],[address2]w 其他文档名
- w与其他文档名之间只有一个空格
- 将pattern space内资料写到其他文件内,数据写如时。会overwrite原来文档中的内容。当其他文档不存在的时候,sed会create文档。
1.10 y
参数y表示转换数据中的字符
[address,[address2]]y/xyz..../abc.....
- x,y,z,a,b,c表示某些字符为y的参数
- x,y,z与a,b,c的个数必须相同
- sed将pattern space中数据内的a字符转变为x,b-->y,c-->z.....
例1
将input.dat文件中的小写cba字母改写为大写CBA
sed -e 'y/cba/CBA'
1.11 !
参数!表示不执行函数参数操作
[address,[address]] !函数参数
# 删除,除了含1996字符串外所有的行
sed -e '/1996/!d' input.dat
1.12 n
参数n表示读入下一行资料
[address,[address]]n
- 输出pattern space中数据,将下一笔资料读入到pattern space,执行下一个编辑命令。
例1
输出input.dat文件中偶数行资料。
#--------------------
input.dat中的内容如下
The
UNIX
Operation
System
#--------------------
set -n -e 'n' -e 'p' input.dat
#result
UNIX
System
- -n表示将输出控制权转到使用指令进行控制
- 开始读入第一行(会覆盖第一行),通过n参数读入第二行,p参数输出第2行
04-Sed操作参数的更多相关文章
- sed高级命令
所谓高级,主要是指这里将要提到的命令都能改变sed执行或者控制的流程顺序(sed通常都是一行被读入模式空间,并用脚本中的sed命令一个接一个的应用于那一行). 高级sed命令分成3个组: 1)处理多行 ...
- day18 sed
具体功能作用: 1) 文件中添加信息的能力 (增) ok 2) 文件中删除信息的能力 (删) ok 3) 文件中修改信息的能力 (改) 4) 文件中查询信息的能力 (查) OK sed命令的语法信息 ...
- Ubuntu 新装服务器部署流程
1.设定时区 rm -f /etc/localtime cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 2.配置apt-get源 sed -i ...
- 在Ubuntu 14.04安装和使用Docker
Docker是一个开源软件,它可以把一个Linux应用和它所依赖的一切(比如配置文件)都封装到一个容器.然而,Docker与虚拟机不同,它使用了沙箱机制,Docker容器不运行操作系统,它共享主机上的 ...
- install hdp 2.2 on ubuntu 14.04
http://www.swiss-scalability.com/2014/12/install-hdp-22-on-ubuntu-1404-trusty.html 在新加节点上运行 sed -e & ...
- Win7&Ubuntu12.04 双系统引导问题
周末的时候手贱,重装系统,导致原来的ubuntu12.04和win7双系统的引导不见了,所以在此进行一下说明,如何修复. 1. win7和ubuntu12.04双系统引导修复 问题描述: 在重装 ...
- 在Ubuntu16.04集群上手工部署Kubernetes(未完,陆续补充中)
主机信息 主机 IP OS k8s-master 10.10.10.20192.168.0.20 Ubuntu Server 16.04 k8s-node1 10.10.10.21192.168.0. ...
- Ubuntu 16.04 LTS发布
[Ubuntu 16.04 LTS发布]Ubuntu 16.04 LTS 发布日期已正式确定为 2016 年 4 月 21 日,代号为 Xenial Xerus.Ubuntu16.04 将是非常受欢迎 ...
- awk sed 总结
Awk总结笔记 介绍 90年代 new awk :nawk Linux 的是gawk 我们简化awk 用法 # awk [options ] ‘scripts’ file1 file2 .... # ...
- [转]在Ubuntu 14.04安装和使用Docker
在Ubuntu 14.04安装和使用Docker 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs Docker是一个开源软件,它可以把一 ...
随机推荐
- 纯Vue实现网页日常任务清单小功能(数据存储在浏览器)
任务清单可以极大提高我们的工作效率.哪些事情办了.哪些事情代办.哪些是紧急需要办的事情等等. 在组件化编码实战3的基础上进一步改进.将原先的数据保存的浏览器中.就可以做到关闭网页也不会丢失数据的情况 ...
- 使用NEON指令加速RGB888和RGB565的相互转换
最近在做一个项目需要将RGB888转换为RGB565,用C语言转换的代码很简单,这是从ffmpeg中摘抄的代码 static inline void rgb24to16_c(const uint8_t ...
- HDFS追加数据报错解决办法
主要的两个错误,今天晚上一直轮着报: 第一个 2022-10-25 21:37:11,901 WARN hdfs.DataStreamer: DataStreamer Exception java.i ...
- day05-JavaScript02
JavaScript02 8.JavaScript函数 JavaScript函数介绍 函数是由事件驱动的,或者当它被调用时,执行的可重复使用的代码 例子 <!DOCTYPE html> & ...
- 如何在CentOS7上搭建自己的GitLab仓库
序言 各位好啊,我是会编程的蜗牛,作为java开发者,在团队开发中,一般都是需要使用git及git仓库来管理我们的代码的,这非常方便.我以前在小公司的时候,基本都是一个人开发一个项目,所以也没有怎么接 ...
- JVM学习笔记——内存模型篇
JVM学习笔记--内存模型篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的内存模型部分 我们会分为以下几部分进行介绍: 内存模型 乐观锁与悲观锁 synchronized优化 内 ...
- Go实现常用软件设计模式三:生成器模式
目录: 举个栗子 概念介绍 使用场景 1.举个栗子 2.概念介绍 使用一个中间件来帮助我们填充创建对象参数 优点: 将创建逻辑集中在一起 复用了不同参数创建逻辑 缺点: 新增生成器类 3.使用场景 m ...
- 关于 python3 中的多线程的问题及理解
什么是 join() ? join() 有什么用? 答:join() 有一个参数是timeout 设置超时,这里的超时都是针对主线程的,当子线程设置为 join(1) 后,则主线程会等待这个线程 1 ...
- 【软考-中级-数据库相关知识】03、SQL语言
SQL语言 查询 允许出现聚集函数的是:select子句和having子句 权限管理 语法:GRANT XXX ON TABLE TO USER WITH GRANT OPTION 存储过程和函数 函 ...
- 最新 2022 年 Kubernetes 面试题高级面试题及附答案解析
题1:Kubernetes Service 都有哪些类型? 通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上.其主要类型有: C ...