sed初级教程
简介
sed是作为特殊目的的编辑器而创建的,用于专门执行脚本;与ed不同,它不能交互地使用。sed面向字符流。默认情况下,到sed的所有输入都会经过相应的处理,并转为标
准输出。输入文件本身不发生改变。如果确实想改变输入文件,一般使用shell机制进行输出重定向,当你对所做的编辑工作满意时,用修改后的版本代替最初的文件。
sed的字符流定位对如何应用寻址有重要影响。sed遍历文件,每次一行,这样每一行都成为当前行,而且每一行都应用相同的命令。
sed命令是隐式的全局命令
sed中s/regular/complex/ 等价于 ed中 g/regular/s//complex/
理解ed中的当前行寻址与sed中全局行寻址之间的区别是很重要的。在ed中,使用寻址扩大受命令影响的行数;在sed中,使用寻址限制受命令影响的行数。
模式空间
sed维护一种模式空间,即一个工作区或临时缓冲区,当应用编辑命令时将在那里存储单个输入行。下图展示了进行模式空间转换的一个两行的脚本。它将“TheUnix System”改变为“The UNIX Operating System"。一次一行设计的一个优点是sed在读取非常庞大的文件时不会出现问题。屏幕编辑程序必须将整个文件(或者它的一些庞大的部分)读入内存,这将会产生内存溢出或者在处理虎大的文件时速度非常慢。

模式空间的内容是动态的,而且并不总是匹配最初的输入行。
模式空间的操作
- 生成输入行的备份。
- 修改模式空间中的备份。
- 将备份输出到标准输出。
使用sed
调用sed有两种方法:在命令行上指定编辑指令,或者将它们放到一个文件中并提供这个文件的名字。
测试文本:list
John Daggett, King Road, Plymouth MA
Alice Ford, East Broadway, Richmond VA
Orville Thomas, Oak Bridge Road, Tulsa OK
Terry Kalkas, Lans Road, Beaver Falls PA
Eric Adams, Post Road, Sudbury MA
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, Bayshore Pkwy, Mountain View CA
Sal Carpenter, 6th Street, Boston MA
命令行上指定命令
3种方式指定多行指令
用分号分割指令

每个命令前面加-e
sed -e 's/MA/Massachusetts/' -e 's/ PA/, Pennsylvania/' list
效果同beyond compare对比图
利用Bash分行指令功能
[root@localhost learn_sed]# sed '
> s/MA/Massachusetts/
> s/ PA/, Pennsylvania/' list
效果同beyond compare对比图
阻止未命中输入行显示
上面输出结果,那些未命中的行业显示了。-n可以组织sed输出,但是他把命中的行也阻止了。所以,对于想要输出的行必须包含p
sed -n 's/MA/Massachusetts/p;s/ PA/, Pennsylvania/p' list

提供脚本文件
sed脚本文件,sedsrc
s/MA/Massachusetts/
s/ PA/, Pennsylvania/
-f 指定命令行上的脚本文件名字
sed -f sedsrc list
输出结果对比见beyond compare对比图。
显示在屏幕上的结果是临时的,输入文件中没有发生改变。要先保存输出结果,必须重定向
sed -f sedscr list > newlist
千万注意,list和newlist不能是同一个文件。
sed初级教程的更多相关文章
- Python图像处理库:Pillow 初级教程
Python图像处理库:Pillow 初级教程 2014-09-14 翻译 http://pillow.readthedocs.org/en/latest/handbook/tutorial.html ...
- shellKali Linux Web 渗透测试— 初级教程(第三课)
shellKali Linux Web 渗透测试— 初级教程(第三课) 文/玄魂 目录 shellKali Linux Web 渗透测试—初级教程(第三课) 课程目录 通过google hack寻找测 ...
- Mac OS X Terminal 101:终端使用初级教程
Mac OS X Terminal 101:终端使用初级教程 发表于 2012 年 7 月 29 日 由 Renfei Song | 文章目录 1 为什么要使用命令行/如何开启命令行? 2 初识Com ...
- Unix sed实用教程系列目录[已完成]
本系列文章已经译完了,译自awk-sed@theunixschool,收获颇丰,作者没有讲明白的我做了补充,并且尝试讲的更清楚,整理成系列索引,方便学习,开篇非译文,是我为了方便后面的理解写的一篇,感 ...
- Unix sed实用教程开篇
已经看了一段时间的Linux Shell编程了,也能完成一些基本的使用,为了加深理解,恰好看到了The Unix School的一个sed&awk教程,不是简单的命令参数堆积,而是一个相当实用 ...
- Coding 初级教程(二)——上传已有项目
Coding 初级教程(二)——上传已有项目 [摘要:方针读者 :已具有 Coding.net 的账号. 本文首要先容若何把项目上传到 Coding.net 上. 分两种环境,一种是项目已归入到 gi ...
- [初级教程]用SecureCRT+Xming轻松远程实现Linux的X DISPLAY
[初级教程]用SecureCRT+Xming轻松远程实现Linux的X DISPLAY 发布者:sqqdugdu 时间:10-06 阅读数:2117 测试环境:RHEL 6.1,SecureCRT 5 ...
- awk与sed简明教程
看到大牛写的关于awk和sed的简明教程,写得很好,为了尊重作者,就不全文转载了,这里标记下链接,方便以后查阅. awk简明教程:http://coolshell.cn/articles/9070.h ...
- Window服务初级教程以及log4net配置文件初始化
Window服务初级教程:http://www.jb51.net/article/48987.htm 另外,配置log4net这个日志功能的时候需要初始化,不然会报没有初始化的错误,而且初始化的节点应 ...
随机推荐
- Spring MVC初始化
整个Spring MVC的初始化,配置了DispatcherServlet和ContextLoaderListener,那么它们是如何初始化Spring IoC容器上下文和映射请求上下文的呢?所以 ...
- 线性回归:boston房价
from sklearn.linear_model import LinearRegression,Lasso,Ridge from sklearn.datasets import load_bost ...
- LODOP判断没成功发送任务-重打一下
一般情况下打印执行了PRINT()或PRINTA(),就会加入打印机队列,如果打印机脱机,就会在队列里排队,当打印机连上并取消脱机的时候,正在排队的任务就会打出,所以一般建议用是否加入队列来判断打印成 ...
- jquery 单击选中 再次选中取消选中
html: <div id="full" class='weui-popup__container' style="background: #fff"&g ...
- CSS控制元素背景透明度总结
方法一:CSS3的background rgba filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColor ...
- Egg.js中使用sequelize事务
对数据库的操作很多时候需要同时进行几个操作,比如需要同时改动几张表的数据,或者对同一张表中不同行(row)或列(column)做不同操作,比较典型的例子就是用户转账问题(A账户向B账号汇钱): 1 从 ...
- 利用ldirectord实现lvs后端realserver健康状态检查
ldirectord用来实现LVS负载均衡资源在主.备节点间的故障转移.在首次启动时,ldirectord可以自动创建IPVS表.此外,它还可以监控各RealServer的运行状态,一旦发现某Real ...
- 仔细看参数--NGINX之tcp_nodelay
一.知识准备 ● 在nginx优化中有个经常需要设置的参数,tcp_nodelay ● 该参数最核心的功能,就是把小包组成成大包,提高带宽利用率也就是著名的nagle算法 ● tcp协议中,有一个现象 ...
- [.NET Core] - 使用 EF Core 的 Scaffold-DbContext 脚手架命令创建 DbContext
Scaffold-DbContext 命令 参数 Scaffold-DbContext [-Connection] <String> [-Provider] <String> ...
- Quartz.Net—Calendar
动态的排除一些触发器的时间. DailyCalendar-天日历 定义: This implementation of the Calendar excludes (or includes - see ...