Reorganizando dados em arquivo com o awk

0

Eu tenho uma mesa

 ID   Comment    Statement
  1    hi         hello
  2    hi         hello
  1    cya        bye
  1    k          ok
  2    kk         ok

Como alguém poderia produzir um resultado como o seguinte, usando o awk? Assim, o ID se torna o atributo e mantém a mesma ordem que a declaração.

 1       2
 hi      hi
 cya     N/A
 k       kk
    
por user47467 08.01.2015 / 15:37

2 respostas

1

Isso produz sua saída desejada

awk '
  NR>1 {
    ids[$1]
    if (s!=$3) c++
    statements[c]=$3
    s=$3
    comments[$3,$1]=$2
  } 
  END {
    for (id in ids)
      printf "%s\t", id
    print ""
    for (i=1; i<=c; i++) {
      for (id in ids) {
        comment = (comments[statements[i],id] ? comments[statements[i],id] : "n/a")
        printf "%s\t", comment
      }
      print ""
    }
  }
' file

Você precisa se lembrar de algumas coisas para manter o pedido.

    
por 08.01.2015 / 15:56
0
awk 'BEGIN { colwidth=8; format="%-" colwidth "s"; printf format "%s\n","1","2"; };
  NR==1 {next;};
  /^ *1/ { if (NR>2) print col2; col2="N/A"; printf format,$2; };
  /^ *2/ { col2=$2; };
  END { print col2;} ' file
1       2
hi      hi
cya     N/A
k       kk
    
por 08.01.2015 / 15:57

Tags