庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>操作系统>SCO UNIX>系统管理>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

用sed实现文件反转

 作者:本站收集   日期:2005-3-13
字号选择〖 〗/ 双击滚屏 单击停止   


问题:如何反转文件:
为了方便讨论我们假定我们要反转的文件a.txt内容如下(三行):
hello
world
sed

解决:
sed -e '1!G;h;$!d' a.txt > b.txt

解释如下:
实现的思想有些别扭:把保留空间(临时缓冲区)的内容附接到当前行的模式空间,
删除当前行模式空间,如此往复,直到最后一行,到最后一行的时候不删除当前模
式空间,最后输出模式空间。

命令:
上述sed命令'1!G;h;$!d',用分号隔开三个子命令G, h, d,应用于每一行的分析,
G表示把缓冲区内容附接到当前模式空间中,h表示将模式空间的内容保存到缓冲区中,
d表示删除模式空间。

地址:
我们看到G命令与d命令前面都有前缀,分别是1!和$!,这表示命令的有效的范围。
1!G表示除了第一行外都执行G命令,$!d表示除了最后一行外都执行d命令。
(举一反三:1G表示只有第一行才执行G命令,$d表示只有最后一行才执行d命令)。

处理过程:
好了,处理过程涉及的命令以及命令的有效范围我们都清楚了,就可以看看命令的
执行过程以及处理过程缓冲区空间和模式空间的变化:

命令 缓冲区 模式空间
1行 h;d 前(null) 后hello\n 前hello\n 后(null)
2行 G;h;d 前hello\n 后world\nhello\n 前world\n 后(null)
3行 G;h 前world\nhello\n 后sed\nworld\nhello\n 前sed\n 后sed\nworld\nhello\n

说明:前表示分析前,后表示分析后。

上一篇:Unix系列shell程序编写    下一篇:swap--交换区配置  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-3-13
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿