Nota: O seguinte artigo irá ajudá-lo com: Como trabalhar de forma mais eficiente com arquivos de log usando Linux csvkit
Os arquivos CSV geralmente são importados para o software Excel ou LibreOffice antes de serem usados e analisados. É muito conveniente e confortável, desde que os arquivos não sejam muito grandes. Mas alguns arquivos de log podem conter bilhões de linhas, o que torna impossível importá-los para planilhas. Ou você pode precisar analisar arquivos remotamente em servidores headless sem qualquer capacidade de usar uma interface gráfica de usuário.
VEJO: Kit de contratação: desenvolvedor JavaScript (TechRepublic )
Felizmente, uma solução fácil está disponível em todos os sistemas operacionais Linux: o software csvkit.
Como instalar o csvkit
Com a ferramenta disponível nos repositórios padrão, é extremamente fácil de instalar. Neste artigo, usaremos um sistema operacional baseado no Ubuntu.
Vamos emitir a instalação em um shell de linha de comando executando:
sudo apt install csvkit
É isso. O sistema agora instala a ferramenta e todas as dependências necessárias.
Como trabalhar em um arquivo CSV
Para ilustrar nosso ponto, trabalharemos em um arquivo CSV do SimpleMaps.com contendo uma lista de cidades e informações sobre elas: país, longitude, latitude, população e muito mais.
A primeira linha do arquivo CSV mostra os diferentes nomes das colunas, como costuma ser o caso dos arquivos CSV. Podemos vê-lo com o comando “head”, que por padrão mostra as primeiras 10 linhas de um arquivo (Figura A).
Figura A
Como descobrir as colunas do arquivo
Agora vamos começar a usar o csvcut na linha de comando, uma das ferramentas incorporadas no csvkit. Iniciar o próximo comando mostrará automaticamente as colunas nomeadas e os índices (Figura B):
csvcut -n
Figura B
Podemos então usar os índices ou os nomes das colunas para abordá-lo.
Como gerar colunas selecionadas
Uma das operações mais comuns ao lidar com arquivos CSV consiste em selecionar apenas algumas colunas ou reorganizar colunas.
Para produzir apenas algumas colunas, vamos mais uma vez usar o comando csvcut com a opção -c. Ambas as linhas de comando funcionam, para mostrar como usar os índices ou o nome da coluna. Em nosso exemplo, usaremos novamente o comando head com um pipe, apenas para mostrar as primeiras linhas dos resultados (Figura C).
csvcut -c 1,5,10
csvcut -c city,country,population
Figura C
Se quisermos adicionar números de linha à saída, a opção -l vem para resgatar e adiciona uma nova coluna chamada line_number à nossa saída (Figura D).
Figura D
É claro que a saída pode ser redirecionada para um novo arquivo. Para fazer isso, redirecionamos a saída para um arquivo usando o caractere >. Do nosso exemplo anterior:
csvcut -l -c city,country,population worldcities.csv > newfile.csv
Como alterar a ordem das colunas
Usando csvcut também podemos criar uma saída que reordena as colunas. Tudo o que precisamos é especificar as colunas, e a ferramenta irá exibi-las de acordo (Figura E).
Figura E
Como classificar os dados com csvsort
É possível classificar dados usando o comando csvsort. Semelhante ao csvcut, o csvsort permite o uso da opção -n para listar colunas e -c para usar o índice da coluna ou o nome da coluna.
Por padrão, o csvsort funciona em modo crescente, mas é possível usar a opção -r para classificar em modo decrescente.
Vamos classificar nosso arquivo pelo nome do país, em ordem decrescente (Figura F):
csvsort -r -c country worldwities.csv
Figura F
É possível ordenar várias colunas: Tudo que você precisa é usá-las com a opção -c (Figura G). A próxima linha classificará nossos dados em modo decrescente por país e população:
csvsort -r -c country,population worldcities.csv
Figura G
Como combinar csvcut e csvsort
Csvsort é poderoso, mas sempre gera todas as colunas. Ao combinar csvcut e csvsort, podemos obter qualquer tipo de saída ou classificação.
Como exemplo, vamos extrair apenas o nome da cidade, nome do país, latitude, longitude e classificar essas colunas por latitude (Figura H).
csvcut -c city,country,lat worldcities.csv | csvsort -c lat
Figura H
Como obter uma saída melhor
Se você quiser uma saída melhor, o comando csvlook permite renderizar a saída CSV em um formato de largura fixa compatível com Markdown.
Do nosso exemplo anterior, apenas canalizamos o comando csvlook para o final da nossa linha (Figura I):
csvcut -c city,country,lat worldcities.csv | csvsort -c lat | csvlook
Figura I
Como obter estatísticas com csvstat
O comando csvstat permite obter estatísticas diferentes no arquivo CSV.
Executado sem argumentos, exceto o nome do arquivo, fornece estatísticas detalhadas para cada coluna. Também é possível usar a opção -c para gerar colunas selecionadas (Figura J).
csvstat -c country
Figura J
É possível ajustar a saída do comando usando diferentes opções.
Para extrair os valores exclusivos da coluna do país, podemos usar a opção –unique (Figura K).
Figura K
Para obter uma lista de todas as opções do csvstat, digite o seguinte comando:
csvstat -h
O Csvkit contém várias ferramentas de linha de comando diferentes que permitem que especialistas de TI e pessoas que precisam trabalhar em arquivos CSV grandes façam isso facilmente na linha de comando. A capacidade de combinar essas ferramentas, especialmente csvcut e csvsort, o torna muito poderoso e deve atender a todas as necessidades dos profissionais.
Além disso, também é possível usar o csvkit para converter arquivos XLS e JSON em CSV antes de analisá-los ou usá-los com as ferramentas de linha de comando.