Chinaunix首页 | 论坛 | 博客
  • 博客访问: 916620
  • 博文数量: 75
  • 博客积分: 1216
  • 博客等级: 少尉
  • 技术积分: 1998
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-11 16:20
个人简介

优秀是一种习惯

文章分类

全部博文(75)

文章存档

2014年(1)

2013年(29)

2012年(45)

分类: Python/Ruby

2012-09-17 12:45:44

这条命令很早很早就有了,是sed命令的模式空间和保存空间的典型应用。但是有很多人不知道该怎么解释这条命令。所以在这里解释一下。
执行代码sed '1!G;$!h;$!d'

  1. [root@station1 ~]# cat data
  2. a
  3. b
  4. c
  5. [root@station1 ~]# sed '1!G;$!h;$!d' data
  6. c
  7. b
  8. a
  9. [root@station1 ~]#

举例文本
a
b
c
读取第一行a
1!G这一条不执行;
$!h  把a这一行覆盖保存空间,就是说保存空间只有一行:a;
然后d,将模式空间的a删除,所以什么也不输出;

然后读取第二行b
执行G,将保存空间的a,追加到当前模式空间,当前模式空间:
b
a

然后执行h,将当前模式空间覆盖保存空间,这是保存空间里的内容:
b
a
然后执行$!d,删除当前模式空间,也就是什么都不输出

读取最后一行c
执行G,将保存空间内容追加当前模式空间,也就是现在模式空间内容:
c
b
a
最后一行不执行$!h;$!d,所以输出:
c
b
a
阅读(1570) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~