Eu tenho alguns arquivos separados por tabulação que consistem em um cabeçalho bastante ilegível devido ao comprimento diferente das entradas da tabela. Essencialmente, parece um pouco
c1 c2 c3 c4
A 0 1.0231321321213 92
BBBBB 12321.00002131 19912132. 0
CC 0.0999813221321 0 0
Existe uma maneira de tornar isso mais legível com colunas espaçadas mais largas e as colunas bem alinhadas a partir de colunas legíveis como
c1 c2 c3 c4
A 0 1.0231321321213 92
BBBBB 12321.00002131 19912132. 0
CC 0.0999813221321 0 0
Se as colunas de entrada forem separadas com espaço em branco simples (espaço ASCII 0x20 e/ou tabulação 0x09) e nenhuma coluna em branco, é tão simples quanto:
No entanto
column
, não processa Retorno de carro (ASCII 0x0d ou\r
), Alimentação de formulário (ASCII 0x0c ou\f
) ou Tabulação vertical (ASCII 0x0b ou\v
) como delimitadores.Se as colunas puderem ser separadas com algum "espaço em branco" (
[[:space:]]
semelhante a[ \t\r\f\v]
: espaço, tabulação horizontal, retorno de carro, de alimentação ou tabulação vertical (não de nova linha)), você precisará recolher (e converter) todo o espaço em branco em apenas um delimitador ( espaço por padrão). Não é possível usar o caractere de nova linha como delimitador de linha e como delimitador de coluna.Exceto pelo caractere de nova linha, este trabalho:
É possível reduzir os delimitadores de espaço em branco dentro do
[…]
intervalo.Se as colunas no arquivo de origem estiverem separadas por um único caractere (como tabulações) é possível usar a expansão shell ANSI C (
$'…'
) (se o shell em execução tiver essa capacidade) para declarar o caractere usado como delimitador.Então, usando
column
:O delimitador de saída para coluna é sempre um espaço.
Se for necessário aceitar vários delimitadores consecutivos (útil quando houver coluna em branco), existe a opção (GNU)
-n
que desabilita a mesclagem de vários delimitadores adjacentes de entrada em um único delimitador.se o arquivo de origem for separado não com um único caractere, mas com vários caracteres, você ainda poderá defini-los
$'...'
sem o uso extra desed
convertê-los em um único caractere; como Espaço ou Tabs com: