Para começar, eu recomendo que você tenha todos os dados dentro de um arquivo text/plain
, onde, como você escreveu, todos os dados são tab delimited
.
Você pode tentar experimentar como filtrar as colunas usando cut
Exemplo
#get first column of a tab delimited file
> cut -f 1 -d $'\t' file
Depois disso, recomendo que você instale um mecanismo de banco de dados, como por exemplo mysql-server
e um ambiente de trabalho como mysql-workbench
.
Então, se você quiser, posso ajudá-lo a criar um banco de dados indexado com algumas funções de inserção, que o ajudarão a inserir, obter e analisar todos os dados que você precisa agora e no futuro com facilidade.
Outra opção
É alterar a extensão desse arquivo text/plain
para .csv
e abri-lo com LibreOffice Calc
. Depois de abri-lo, selecione o tabulador como delimitador. Você poderá analisar os dados usando pivot tables
, mas não tenho certeza de como conseguir a saída desejada.
Solução de bash
Primeiro, vamos criar um novo diretório para trabalhar.
> mkdir test
Copie seu arquivo de origem para esse novo diretório.
> cp source test/file
Em seguida, insira o diretório
> cd test
Agora, remova a primeira linha do arquivo (a linha de nomes de colunas)
> nano file
press ctrl+k, ctrl+x and y
Em seguida, ordene o arquivo
> sort file > file.sort
Obter todos os nomes de colunas
> cut -f 2 -d $'\t' file > cols
Crie um diretório para colunas
> mkdir c
Divida todos os dados por colunas (ignore os erros)
> while read i ; do grep "$i" file | cut -f 1,3 -d $'\t' > "c/$i" ; done < cols
Junte todos os dados e exclua repetições
> cut -f 1 -d $'\t' file.sort > result
> for f in c/* ; do join result "$f" > tmp ; join -v 1 result "$f" | sed -e 's/$/ -/g' >> tmp ; sort tmp > result ; done
> uniq result