Você pode usar o awk para dividir a primeira coluna:
~$ awk '{split($1,a,";"); $1="";for (i in a){print a[i],$0}}' myfile
K00001 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 36 0 0 52 0 0 0 6 0
K00004 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 36 0 0 52 0 0 0 6 0
K00008 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 36 0 0 52 0 0 0 6 0
Você divide a primeira coluna em ; ( split($1,a,";") ) e depois a exclui para imprimir toda a (nova) linha ( $0 ) para cada item da matriz.
Como sugerido no comentário, após a edição, podemos ver que as guias são usadas como separador. Para usar a guia como separador de campo de saída, você pode usar OFS="\t" , por exemplo, na BEGIN parte do awk. Além disso, um campo vazio é inserido com $1="" . Portanto, em vez de imprimir a[i] , em seguida, $0 , é melhor definir $1 para a[i] e, em seguida, imprimir $0 :
~$ awk 'BEGIN{OFS="\t"}{split($1,a,";"); for (i in a){$1=a[i];print}}' myfile
K00001 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 36 0 0 52 0 0 0 6 0
K00004 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 36 0 0 52 0 0 0 6 0
K00008 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 36 0 0 52 0 0 0 6 0