awk 合并行请教~

源文件
  1. A           001             10
  2. A           002             20
  3. A           003             30
  4. B           004             40
  5. B           005             50
  6. C           006             60
  7. C           007             70
复制代码
需求实现以下格式
  1. A      AA     B     BB   C     CC
  2. 001    10     004   40   006   60
  3. 002    20     005   50   007   70
  4. 003    30
复制代码

作者: wvuu   发布时间: 2011-06-04

回复 wvuu
  1. $ echo 'A           001             10
  2. A           002             20
  3. A           003             30
  4. B           004             40
  5. B           005             50
  6. C           006             60
  7. C           007             70' |\
  8. awk '{if($1==v){nr++;a[nr,nf]=$2;a[nr,++nf]=$3;nf--;t=1}else{nr=1;nf+=t;a[nr,++nf]=$1;a[nr,++nf]=$1 $1;nf--;nr++;a[nr,nf]=$2;a[nr,++nf]=$3;nf--};v=$1}END{nr++;nf++;for(i=1;i<=nr;i++){for(j=1;j<=nf;j++)printf a[i,j] "\t";print""}}'
  9. A       AA      B       BB      C       CC
  10. 001     10      004     40      006     60
  11. 002     20      005     50      007     70
  12. 003     30
复制代码

作者: yinyuemi   发布时间: 2011-06-04