Quando chamado sem nenhuma opção, column
faz com que cada string delimitada seja alinhada com a COLUNA
Crie um arquivo ( ztxt
) contendo algumas cadeias guia - caractere \t
, distribuídas em três linhas que terminam com caractere de nova linha \n
:
aaa1\taaaaaaaaaaaaaa2\taaaaaaaaaaaaaaaaaaa3\taaa4
bbbbbbb1\tbbb2\tbbb3
ccc1\tccc2
Saída de: column ztxt
- perfeitamente alinhado ao TAB-STOP
aaa1 aaaaaaaaaaaaaa2 aaaaaaaaaaaaaaaaaaa3 aaa4
bbbbbb1 bbb2 bbb3
ccc1 ccc2
| | | | | | |
|-------|-------|-------|-------|-------|-------|
Para alinhar o LSH de cada campo sucessivo ao campo acima, você precisa usar a opção -t
, por exemplo. column -t ztxt
aaa1 aaaaaaaaaaaaaa2 aaaaaaaaaaaaaaaaaaa3 aaa4
bbbbbb1 bbb2 bbb3
ccc1 ccc2
Se todos os seus dados estiverem em um fluxo longo sem quebras de novas linhas, você poderá usar um filtro para apresentá-los; por exemplo, um em cada 4 campos. sed
pode fazer isso com este comando.
sed -re 's/(([^\t]*\t){3}[^\t]*)\t/\n/g'
Por padrão, o comando column
mesclará vários delimitadores adjacentes em um único delimitador. Para atender a isso no filtro sed
, também é necessário:
sed -re 's/\t+/\t/g;'
Assim, o comando para dividir um fluxo contínuo de strings delimitadas por tabulação , como toda quarta string é:
<ztxt sed -re 's/\t+/\t/g;s/(([^\t]*\t){3}[^\t]*)\t/\n/g' | column -t
A saída desse fluxo de entrada contionuous é (usando a entrada de amostra original, mas modificada pela substituição das novas linhas originais por caracteres de tabulação - ele ainda deve manter seu rastreio \ n):
aaa1 aaaaaaaaaaaaaa2 aaaaaaaaaaaaaaaaaaa3 aaa4
bbbbbbb1 bbb2 bbb3 ccc1
ccc2