有多个 .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
- 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 做为下标的数组把内容拼接起来。
阅读(3015) | 评论(0) | 转发(1) |