Chinaunix首页 | 论坛 | 博客
  • 博客访问: 214314
  • 博文数量: 87
  • 博客积分: 192
  • 博客等级: 入伍新兵
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-14 07:44
文章分类

全部博文(87)

文章存档

2013年(1)

2012年(86)

分类:

2012-04-14 15:29:47

原文地址:awk之ARGC 和 ARGV 作者:zooyo

有多个 .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 做为下标的数组把内容拼接起来。



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

eagledabao2012-12-28 00:24:19


这个小脚本包含的内容挺多的,学习了。