fork download
  1. #!/usr/bin/env gawk
  2.  
  3. BEGIN { OFS="\t" }
  4.  
  5. NF { count[$1]=++count[$1]
  6. rec[$1][count[$1]]=$2 }
  7.  
  8. END {
  9. for (head in rec)
  10. for (i=1; i<length(rec[head]); i++)
  11. for (j=i+1; j<=length(rec[head]); j++)
  12. print head, rec[head][i], rec[head][j] }
  13.  
Success #stdin #stdout 0s 4512KB
stdin
P00001 Q00001
P00001 Q00002
P00001 Q00003
P00002 R00001
P00002 R00002
P00002 R00003
stdout
P00001	Q00001	Q00002
P00001	Q00001	Q00003
P00001	Q00002	Q00003
P00002	R00001	R00002
P00002	R00001	R00003
P00002	R00002	R00003