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/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/false
bin:x:2:2:bin:/bin:/bin/false
sys:x:3:3:sys:/dev:/bin/false
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/false
man: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 : -t
root    x  0  0    root    /root          /bin/bash
daemon   x  1  1    daemon  /usr/sbin      /bin/false
bin    x  2  2    bin     /bin            /bin/false
sys  x  3  3    sys     /dev            /bin/false
sync   x  4  655  sync    /bin          /bin/sync
games    x  5  60   games   /usr/games      /bin/false
man    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             EMAIL
Uira Ribeiro  (31) 3069-8315  [email protected]

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