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

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

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-05-14 12:47:30

文本:
mmy the Weasel
100 Pleasant Drive
San Francisco, CA 12345

Big Tony
200 Incognito Ave.
Suburbia, WA 67890

Cousin Vinnie
Vinnie's Auto Shop
300 City Alley
Sosueme, OR 76543


要求把该地址横向打印:
mmy the Weasel  100 Pleasant Drive      San Francisco, CA 12345
Big Tony        200 Incognito Ave.      Suburbia, WA 67890
Cousin Vinnie   Vinnie's Auto Shop      300 City Alley  Sosueme, OR 76543
 
  1. awk 'BEGIN{FS="\n";RS="";OFS="\t"}NF+=0' file
[解析]
  先看文本的排列循序,3段地址之间把空行作为记录分割符,那么RS="",文本之间的字段分割符是换行,那么FS="\n",为了排列对齐,把输出分割符为制表符,那么OFS="\t",要使OFS生效,必须对字段进行操作,那么这里设置了一个NF+=O,或者NF=NF,$1=$1都是可以的。


  1. sed -n ':a;/\n$/!{$bb;N;ba};:b;s/\n/\t/g;p' file
[解析]
把文本都读入pattern space,当匹配到空行的时候,进行替换然后打印。

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

yestreenstars2012-12-31 13:22:45

sed ':1;N;/\n$/!{s/\n/\t/;b1};P;d'这样也可以。

力哥丶2012-12-28 23:58:51

为什么谷歌搜NF+=0你是第一。