Diferentes maneiras de usar o comando da coluna no Linux
- 3114
- 105
- Wendell Legros
Você já esteve em uma situação para trabalhar com arquivos CSV e produzir saída em formato tabular estruturado? Recentemente, eu estava trabalhando com a limpeza de dados em um arquivo que não está em uma estrutura adequada. Possui tantos espaços de branco entre cada coluna e eu tenho que convertê -la em formato CSV para empurrar para o banco de dados. Após limpar e criar a saída no formato CSV, minha saída não é visualmente atraente para verificar a integridade dos dados no arquivo CSV. Este é o momento em que o comando "coluna" é útil para mim.
De acordo com a manpra, o coluna comando “Listas de colunas”. Em palavras simples, o coluna é um utilitário simples que pode formatar sua saída em um coluna formato (linhas e campos) com base na estrutura do seu arquivo de origem. O coluna O comando faz parte do pacote Util-Linux.
Um ponto importante a ser observado aqui é coluna O comando se comporta de maneira diferente em distritos baseados em Debian e Rhel. O motivo é que a distro baseada em Debian usa “coluna" de Bsdmainutils Em vez de UTIL-Linux. A versão a montante do coluna O comando é mais novo que o Bsdmainutils pacote. Dê uma olhada no relatório do bug para saber mais sobre isso.
$ dpkg -s $ (qual coluna)Qual coluna
Para fins de demonstração, estou usando CENTOS 7 e mostrará diferentes opções entre Ubuntu e CENTOS 7. Para verificar o coluna Versão Execute o seguinte comando. Este comando também mostrará o Util-linux versão do pacote.
$ colun -version # não funcionará em Debian/Ubuntu
Você também pode verificar a versão do Util-Linux executando os comandos abaixo.
$ rpm -qa | Grep -i Util -Linux # Redhat, Centos, Fedora, Amazon Linux $ DPKG -L | grep -i util -linux # ubuntu
Antes de usar o coluna comandar um bom lugar para começar será a página do homem e explorará suas opções.
$ coluna Man
Listar o conteúdo do arquivo em formato tabular
O coluna O comando pode criar uma tabela passando o nome do arquivo como um argumento junto com o -t
bandeira. estou usando /etc/passwd como o arquivo de entrada.
$ coluna -t /etc /passwdListar o conteúdo do arquivo no formato da tabela
Olhando para a imagem acima, você pode pensar que não é isso que esperávamos e a saída pode parecer estranha. Sim! Você está certo. Colunas considerar espaço como delimitador padrão Ao criar uma tabela. Este comportamento pode ser substituído pela passagem de um delimitador personalizado.
Delímetro personalizado
Delimitadores personalizados oferecem uma ampla gama de opções para trabalhar. Para criar um uso de delimitador personalizado -s
bandeira seguida por um delimitador. Agora vamos usar ":"
como um delimitador para dividir /etc/passwd arquivo.
$ coluna -s ":" -t /etc /passwdDelimitador
Veja a imagem acima onde a tabela é bem formatada e estruturada. De Util-linux versão 2.23 opção -s
foi alterado para não ser ganancioso.
Agora execute o mesmo comando em Ubuntu e o resultado será ganancioso. Isto é porque coluna comando (Bsdmainutils) sobre Ubuntu tratará várias palavras adjacentes como uma única palavra.
$ coluna -s ":" -t /etc /passwdSaída gananciosa
Para superar esse uso de comportamento -n
bandeira.
$ column -t -s ":" -n/etc/passwd # apenas em debian/ubuntuSaída sem graça
Ignore linhas vazias brancas na saída de arquivo
Quando você tem linhas em branco em seu arquivo de entrada, o comando da coluna por padrão o ignora. Veja meu arquivo de entrada que está no formato CSV e eu adicionei uma linha em branco entre todas as linhas. Agora vamos criar uma tabela como fizemos antes com este arquivo de entrada.
$ coluna -t -s ";" fictício.TXTIgnore vazio enquanto linhas
Da imagem acima, você pode ver meu arquivo de entrada fictício.TXT tem linhas vazias e quando tento criar uma tabela, linhas vazias são ignoradas.
Observação: Este é o comportamento padrão para os dois “BSDMAINUTILS/UTIL-Linux”Variante do coluna comando. Mas coluna (Bsdmainutils) tem a opção de substituir esse comportamento passando -e
bandeira.
$ coluna -e -t -s "," boneco.txt # apenas em Debian/UbuntuArquivar linhas brancas
A partir da imagem acima, você pode ver que a tabela é formatada corretamente e as linhas vazias não são ignoradas.
Separador de saída de arquivo
Por padrão, dois espaços brancos serão usados como separadores de saída. Este comportamento pode ser substituído pela passagem -o
bandeira. Você não terá uma opção separadora de saída disponível no coluna (Bsdmainutils).
$ column -t -s "," -o "||" fictício.txt # somente em distro baseada em RHELSeparador de saída de arquivo
Converter linhas de arquivo em colunas
Usando o -x
A bandeira que você pode converter linhas em colunas. Este comportamento é o mesmo em ambos RHEL e Ubuntu variantes do comando da coluna. Este é um recurso muito útil quando você precisa pegar um determinado campo através do comando AWK ou da coluna e converta -o no cabeçalho do seu arquivo CSV.
$ coluna -x preenchcols.TXTConverter linhas de arquivo em colunas
Quando você executa o coluna comando sem usar nenhum sinalizador O comportamento será o mesmo que passar -x
bandeira.
Encontre o tamanho da coluna
O coluna usa uma variável ambiental ($ Colunas)
Para descobrir o tamanho do seu terminal e com base no tamanho Use o comando Echo, o tamanho da tabela será exibido no terminal.
$ eco $ colunas
Dê uma olhada na imagem abaixo. Inicialmente, redimensionei meu terminal para ter $ Colunas
o tamanho definido como 60 e executou o comando da coluna. Mais uma vez, redimensionei meu terminal para ter $ Colunas
o tamanho definido como 114 e executou o comando da coluna novamente. Você pode ver a diferença na maneira como a coluna imprime a tabela quando redimensionamos o terminal.
$ column -t -s ":" /etc /passwd | Cabeça 5Redimensione tamanhos de coluna
É isso para este artigo. Se você tiver algum feedback, forneça -o na seção de comentários.
- « Maneiras diferentes de ler o arquivo em scripts bash usando o loop while
- Como instalar o Terraform em distribuições Linux »