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

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

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2012-05-27 13:36:48

cat file:
A
1
B
2
C
3
D
E
5
F
G

合并为:
A 1
B 2
C 3
D
E 5
F
G





  1. sed ':a;$!N;s/\n\([0-9]\)/ \1/;ta;P;D' file
[解析]
这是最简单的有效的常用思路。用 N;P;D 的组合,简练有效。




  1. sed -n 'h;n;H;/[0-9]/{g;s/\n/ /p;b};x;P;D' file <(echo)
[解析]
这是我另外想的思路,主要是利用 h;H 的组合,最后加入一个空白行,因为执行到 n 命令后,到最后一行就执行退出了,不会执行到后面 x;P 的操作打印,最后一行是字母的行就无法打印。





  1. awk '$0=/[0-9]/?FS$0:(NR==1?"":RS)$0' ORS= file
[解析]
ORS 默认输出是换行,这里设置为空,手动设置哪个时候为换行操作,这样把数字和字母拼接起来。


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

心乃南部之星2013-04-11 16:01:46

sed ':a;$!N;s/\n\([0-9]\)/ \1/;ta;P;D' file
读入文件第一行的时候,执行完替换操作 pattern space 里应该是 A 1,执行ta, 这时候应该没有输出,我想知道直到读入D那行,替换操作不成功的时候,patternspace里是什么,程序是怎样执行的,这个问题困扰我好久,一直没理解,还请版主大人耐心解释下啊