awk '
{
a[NR]=$0
b[NR]=$2
}
END{
for(i=1;i<=NR;i++){
k=i+1
printf("%s ",a[i])
for(j=k;j<=NR;j++)
printf("%s ",b[j])
print ""
}
}' table.file
No primeiro script, são criadas duas matrizes ( a
e b
) com NR
(número da linha) como índice. De adicionar a cada elemento da matriz a
todos os elementos da matriz b
mas sem primeiro k
ones.
Para caso de limitação de memória, o mesmo pode ser feito por meio de dupla passagem de arquivo de entrada:
awk '
NR==FNR{
b[NR]=$2
rows=NR
next
}
{
printf("%s ",$0)
for(j=FNR+1;j<=rows;j++)
printf("%s ",b[j])
print ""
}
}' table.file table.file