fbpx Certificação Linux: Comando column no Linux (formata em coluna, CSV ou JSON) [Guia Básico]

Blog

Comando column no Linux (formata em coluna, CSV ou JSON) [Guia Básico]

📅 06/12/2021 ⏱ 4 min ✍️ Uira Ribeiro
Linuxcomandos
Comando column no Linux (formata em coluna, CSV ou JSON) [Guia Básico]

O comando column no Linux pode realmente poupar um desenvolvedor um bom tempo. Ele permite formatar um arquivo ou a saída de um comando em colunas, CSV (separado por virgula) ou JSON.

Isso realmente poupa um bom tempo em transformação de dados.

Veja por exemplo o arquivo /etc/passwd que contém os usuários do sistema, com os campos separados por dois-pontos:

$ cat /etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/falsebin:x:2:2:bin:/bin:/bin/falsesys:x:3:3:sys:/dev:/bin/falsesync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/bin/falseman:x:6:12:man:/var/cache/man:/bin/false

O comando column pode ser usado para ler o conteúdo deste arquivo, e separá-lo em colunas:

$ column /etc/passwd -s : -troot     x  0  0    root    /root           /bin/bashdaemon   x  1  1    daemon  /usr/sbin       /bin/falsebin      x  2  2    bin     /bin            /bin/falsesys      x  3  3    sys     /dev            /bin/falsesync     x  4  655  sync    /bin            /bin/syncgames    x  5  60   games   /usr/games      /bin/falseman      x  6  12   man     /var/cache/man  /bin/false

O comando column também pode ser usado para ver um arquivo Separado-por-Virgula CVS:

$ cat contatos.csv | column -t -s,NOME          TEL             EMAILUira Ribeiro  (31) 3069-8315  uribeiro@gmail.com

Isto pode ser útil para visualizar este tipo de arquivo sem a necessidade de ter um Excel ou similar.

Em algumas distribuições o comando column possibilita exportar os dados com formato JSON, usando a opção "-J", seguido dos nomes das colunas:

$ cat /etc/passwd | column -t -s : -J --table-columns LOGIN,PASSWORD,UID,GUID,NOME,HOME,SHELL{   "table": [      {"login": "root", "password": "x", "uid": "0", "guid": "0", "nome": "root", "home": "/root", "shell": "/bin/bash"},      {"login": "bin", "password": "x", "uid": "1", "guid": "1", "nome": "bin", "home": "/bin", "shell": "/sbin/nologin"},      {"login": "daemon", "password": "x", "uid": "2", "guid": "2", "nome": "daemon", "home": "/sbin", "shell": "/sbin/nologin"},      {"login": "adm", "password": "x", "uid": "3", "guid": "4", "nome": "adm", "home": "/var/adm", "shell": "/sbin/nologin"},      {"login": "lp", "password": "x", "uid": "4", "guid": "7", "nome": "lp", "home": "/var/spool/lpd", "shell": "/sbin/nologin"},      {"login": "sync", "password": "x", "uid": "5", "guid": "0", "nome": "sync", "home": "/sbin", "shell": "/bin/sync"},      {"login": "shutdown", "password": "x", "uid": "6", "guid": "0", "nome": "shutdown", "home": "/sbin", "shell": "/sbin/shutdown"},      {"login": "halt", "password": "x", "uid": "7", "guid": "0", "nome": "halt", "home": "/sbin", "shell": "/sbin/halt"},      {"login": "mail", "password": "x", "uid": "8", "guid": "12", "nome": "mail", "home": "/var/spool/mail", "shell": "/sbin/nologin"},   ]}

Este comando pode ser usado em conjunto com qualquer comando do sistema, para gerar arquivos JSON.

Veja por exemplo como é facil gerar uma lista de arquivos de um diretório em JSON:

$ ls -1 |  column -t -J --table-columns ARQUIVO --table-name ARQUIVOS{   "ARQUIVOS": [      {"arquivo": "agradecimento.html"},      {"arquivo": "agradecimentos"},      {"arquivo": "amazon.php"},      {"arquivo": "backup.sh"},      {"arquivo": "certbot-auto"},      {"arquivo": "certificado"},      ]}

Neste exemplo, a saída do comando ls, com a opção -1 que lista somente os arquivos um por linha foi transformado pelo comando column em um arquivo JSON com coluna chamada ARQUIVO, na tabela ARQUIVOS.

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Especialista Linux com mais de 20 anos de experiência.
Autor de 5 livros e mentor de mais de 14.000 alunos certificados.
20 certificações de alto nível, incluindo LPIC-3, CKA, RHCE e AWS Solutions Architect.

WhatsApp