Às vezes, estou recebendo como uma lista separada por guias de entrada, que não está bem alinhada, por exemplo
var1 var2 var3
var_with_long_name_which_ruins_alignment var2 var3
Existe uma maneira fácil de torná-los alinhados?
var1 var2 var3
var_with_long_name_which_ruins_alignment var2 var3
command-line
text-processing
csv
tabulation
Elazar Leibovich
fonte
fonte
column -t
?columns -t
atua no espaço em branco geral. Para trabalhar apenas com guias , usecolumn -t -s $'\t'
Respostas:
Então, a resposta se torna:
Observe que isso divide as colunas em qualquer espaço em branco, não apenas nas guias. Se você deseja dividir apenas nas guias, use:
Os
-s $'\t'
conjuntos do delimitador para separadores únicos e-n
conservas vazios colunas adjacentes (separadores).PS: Só quero ressaltar que o crédito também vale para Alex . A dica original foi fornecida por ele como um comentário à pergunta, mas nunca foi postada como resposta.
fonte
column
:)column
parece falhar quando encontra células vazias. Veja este post . Dependendo da sua versãocolumn
, você poderá especificar a-n
opção para corrigir isso.column -t -s $'\t'
.Aqui está um script para fazer isso:
aligntabs.pl
uso
fonte
pr
enl
são as duas ferramentas básicas para a formatação e, depois dissoawk
,sed
,perl
, etccolumn
column -t -s $'\t'
parece fazer o trabalho.Para paradas manuais de tabulação:
expand -t 42,48
Para paradas automáticas de tabulação, conforme sugerido por alex :
column -t
(
expand
está presente em todos os sistemas POSIX.column
é um utilitário BSD, disponível em muitas distribuições Linux também.)fonte
Seguindo o comentário de Peter.O, que é o que eu queria alinhar (dados delimitados por tabulações, TSV), esta frase funciona muito bem:
fonte
Explicação:
Sed adicionará um espaço entre delimters em branco
A coluna adicionará espaçamento igual entre as colunas
torna-se
Menos abrirá a saída em um visualizador de arquivos. -N e -S adicionam o número da linha e desabilitam o agrupamento, respectivamente
fonte
Com o Miller ( http://johnkerl.org/miller/doc ), você tem uma boa saída de impressão.
Corre
Ter
fonte