Eu tenho um arquivo com dados como:
1,2,3 4,5,6 7,8,9 12,22,0
Existem 4 colunas que eu quero fazer uma tabela com 4 colunas, digamos a,b,c,d
, de modo que a coluna a
tenha o valor da 1ª coluna, a coluna b
tenha esse valor correspondente da 2ª coluna e assim por diante ..
No exemplo acima as colunas serão como:
a b c d
1 4 7 12
2 5 8 22
3 6 9 0
Também o não. de entradas na coluna para uma determinada linha será o mesmo. No entanto, essas entradas podem ser diferentes para linhas diferentes, por exemplo, algumas linhas podem ter apenas 1 entrada separada por vírgula para cada coluna, algumas podem ter até 10.
Não está muito claro como você espera que as colunas sejam nomeadas (entrada do usuário, nome predefinido para cada coluna a ser usada, ou de outra forma).
Apenas para dividir a string em colunas, você pode com
sed
:Aqui
sed
copia a string inteira para o buffer (h
), itera pela linha no ciclo (:a
..ta
) onde obtém a string copiada do buffer (g
), obtém o primeiro número de cada parte (firsts
) e o imprime (p
), depois recupera a string intocada novamente , remove dele o primeiro número (segundo e terceiros
) e coloca a string modificada de volta no buffer (h
). Isso continua enquanto temos,
em string. Uma vez que acabou, apenas imprimimos o que resta comp
.Você pode realizar a tarefa necessária como:
A receita seguida é moldar a linha a ser impressa, escolhendo os elementos de coluna principais de cada coluna.
Outra maneira poderia ser dividir as colunas em uma matriz com base na divisão por vírgula. Em seguida, desloque os elementos principais até ficarmos sem elementos em qualquer uma das sub-matrizes, porque por linha, seu número é o mesmo.