Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3031023
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-08-26 14:33:44

文本:
index
00:15:01
01:44:06
foreign key
01:44:06
01:46:08
Changing lock row
01:46:08
01:46:10
Updating statistics
01:46:10
01:46:33

两个时间列在一行:
index
00:15:01 01:44:06
foreign key
01:44:06 01:46:08
Changing lock row
01:46:08 01:46:10
Updating statistics
01:46:10 01:46:33
 
  1. sed ':a;N;/^[0-9].*\n[0-9].*/{s/\n/ /;ta};P;D' file

[解析]

    N读取下一行内容来执行替换,如果不成功,则P打印模式空间第一行,D删除模式空间第一行,并跳去命令行首开始继续执行,这时候模式空间里index\n00:15:01显然是不会匹配替换成功的,那么就打印index,然后删除第一行内容,模式空间里变成了00:15:01,D会让执行流程从新回到命令首开始自行命令,那么N又读取下一行内容到模式空间里,那么内容成了00:15:01\n01:44:06,显然这是匹配的,执行替换把\n替换掉,执行替换成功后ta会跳去我们定义行首的标签:a处继续执行命令,那么又读取下一样内容到模式空间,这时候模式空间的内容是 00:15:01 01:44:06\nforeign key,这时候不会匹配,则P打印第一行,D删除第一行并又将流程转到行首执行命令,最后才有了这个结果。

 

  1. sed '/[0-9]/{N;s/\n/ /}' file

[解析]

    哎,这是SS老师的思路,不得不承认差距啊。

 

 

  1. awk '{if(/^[^0-9]/){print (NR>1)?RS $0:$0}else{printf $0 FS}}END{printf RS}' file

[解析]

    awk的就所谓复杂点,把几个判断看明白了其实道理还更简单。

阅读(2439) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~