免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1495 | 回复: 4
打印 上一主题 下一主题

行列转换 去重复 求助了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-10 11:26 |只看该作者 |倒序浏览
本帖最后由 x3 于 2012-02-10 13:11 编辑

NODE 0

U1  N1_01  2462478
U1  DAY01  2269231
.....
FIN DAY03  74180
FIN CU  47146
FIN UCV  40259


NODE 1

U1  N1_01  2462359
.......
FIN DAY03  74190
FIN APAN  54761
FIN UCV  40327


NODE 2

U1  N1_01  2462642
......
FIN DAY03  74197
FIN UCV  40240


NODE 3

U1  N1_01  2461330
.....
FIN DAY03  74152
FIN UCV  40154

NODE X

....
.....
以上在 各自 NODE范围内 无重复

但是 要求 按前两个字符列   在NODE列下面的数值输出如下结果

                  NODE 0     NODE 1          NODE 2      NODE 3      NODE XXX

U1  N1_01   2461330   2462359         2462642      2461330      ...
.....
FIN DAY03   74152      74190             74197          74152         ...
FIN UCV      40154       40327            40240          40154          ..


           

论坛徽章:
0
2 [报告]
发表于 2012-02-10 12:50 |只看该作者
噎着了?

论坛徽章:
0
3 [报告]
发表于 2012-02-10 13:10 |只看该作者
最后的格式要求部分 怎么在第一次没有贴上

现在补上了  大家给些帮助吧

论坛徽章:
0
4 [报告]
发表于 2012-02-10 13:30 |只看该作者
回复 3# x3
  1. ywlscpl@ubuntu:~$ cat file
  2. NODE 0

  3. U1  N1_01  2462478
  4. U1  DAY01  2269231
  5. FIN DAY03  74180
  6. FIN CU  47146
  7. FIN UCV  40259


  8. NODE 1

  9. U1  N1_01  2462359
  10. FIN DAY03  74190
  11. FIN APAN  54761
  12. FIN UCV  40327


  13. NODE 2

  14. U1  N1_01  2462642
  15. FIN DAY03  74197
  16. FIN UCV  40240


  17. NODE 3

  18. U1  N1_01  2461330
  19. FIN DAY03  74152
  20. FIN UCV  40154

  21. NODE X
  22. ywlscpl@ubuntu:~$ awk '/^NODE /{a[++n]=$0;v=$0}NF>2{v1=$1" "$2;b[v1];c[v1" "v]=(v1"\t"v in c?c[v1" "v]" "$3:$3)}END{printf "%10s"," ";for (i=1;i<=n;i++) printf "\t"a[i];print "";for (i in b) {printf "%10s",i;for (j=1;j<=n;j++) printf "\t"(i" "a[j] in c?c[i" "a[j]]:"      ");print ""}}' file
  23.                 NODE 0  NODE 1  NODE 2  NODE 3  NODE X
  24.    FIN UCV      40259   40327   40240   40154         
  25.   U1 DAY01      2269231                              
  26.   FIN APAN              54761                        
  27. FIN DAY03      74180   74190   74197   74152         
  28.     FIN CU      47146                                 
  29.   U1 N1_01      2462478 2462359 2462642 2461330   
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-02-10 15:57 |只看该作者
  1. #!/usr/bin/awk -f

  2. {
  3.         if($0~/^NODE/){
  4.                 prefix=$1"\t"$2
  5.                 a[$1"\t"$2]=$0
  6.         }else{
  7.                 b[prefix"\t"$1"\t"$2]=$3
  8.                 if($1!="" && $2!=""){
  9.                         c[$1"\t"$2]
  10.                 }
  11.         }
  12. }
  13. END{
  14.         printf "\t\t"
  15.         for(i=0;i<length(a);i++){
  16.                 printf a["NODE\t"i]"\t"
  17.         }
  18.         printf "\n"

  19.         for(j in c){
  20.                 printf j"\t"
  21.                 for(i=0;i<length(a);i++){
  22.                         printf b["NODE\t"i"\t"j]"\t"
  23.                 }
  24.                 print ""
  25.         }
  26. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP