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

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

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2012-03-01 21:16:58

有多个 .ind 的文件如下:
cat aaa.ind 
rs1 A A
rs2 A A
rs3 C C
rs4 C C

cat bbb.ind 
rs1 T T
rs2 T T
rs3 G G
rs4 G G

cat ccc.ind 
rs1 B B
rs2 B B
rs3 L L
rs4 L L


要求得到如下结果:
aaa.ind  bbb.ind  ccc.ind
AA       TT       BB
AA       TT       BB
CC       GG       LL
CC       GG       LL



  1. awk 'BEGIN{for(i=1;i<ARGC;i++)printf ARGV[i]" ";print ""}{a[FNR]=length(a[FNR])?a[FNR]$2$3FS:$2$3FS}END{for(i=0;i++<FNR;)print a[i]}' *.ind | column -t
[解析]
这里注意一个问题,我们在 BEGIN 操作文件名,因为 BEGIN 模块中无法使用 FILENAME 变量,这里就需要 ARGC 参数数量和 ARGV[] 参数名数组来完成对文件名的打印,这点几乎和 C 是完全一致的。最后再利用 FNR 做为下标的数组把内容拼接起来。



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