用sed实现文件反转
问题:如何反转文件:
为了方便讨论我们假定我们要反转的文件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
说明:前表示分析前,后表示分析后。
- · 应急启动盘与安全管理
- · 创建带网络功能的SCO5.05应急软盘组
- · SCO root密码丢失的处理
- · 提升UNIX中文件系统使用效率
- · 在安装SCO OpenServer时如何设置硬盘驱动器
- · SCO 三种安装BTLD的方式
- · SCO中如何对用户帐户加锁及解锁
- · 与性能相关的几个核心参数(CPU,I/O,MEMORY)
- · SCO Unix 故障排除四例
- · 如何在SCO系统中配置一个非SCSI磁带设备
- · 如何注销sco openserver的空闲用户(只针对非图形的用户)
- · 出现 LOGIN:ERROR-Failed to initialize policy manager
- · FTP命令详解及使用技巧
- · 如何使用工具badtrk检查磁盘坏道?
- · 如何使用工具badtrk检查磁盘坏道?
- · UNIX系统下部分控制代码介绍及其应用
- · SCO OpenServer下的终端监控系统-Spy FileSystem
- · SCO UNIX 下设备驱动程序开发
- · unix口令文件介绍
- · Sco openserver unix下安装双网卡的一些建议
- · UnixWare 7 root口令遗失的解决方法
- · SCO OpenServer 5.0.5中DHCP如何配置 ?
- · SCO命令--df
- · SCO NFS详解
- · 性能相关的几个核心参数(CPU,I/O,MEMORY)
- · 进程管理的两个命令(PS,Sar)
- · SCO UNIX5 的动态核心表
- · SCO UNIX5的几个主要系统进程
- · SCO TCP/IP网络管理---ifconfig命令的语法
- · SCO TCP/IP网络管理---守护进程(daemon)
- · SCO TCP/IP网络管理---守护进程inetd
- · SCO TCP/IP网络管理---FTP的配置
- · SCO TCP/IP网络管理---信任关系
- · SCO TCP/IP网络管理---工具介绍
- · SCO TCP/IP网络管理---TCP/IP的启动
- · SCO Unix 制作系统应急盘“Out of inodes”错误的处理
- · Unix系统限制终端登录小技巧[转帖+修改]
- · 六大UNIX的比较
