column
funciona por caractere. Ele conta os caracteres imprimíveis de cada célula e depois os blocos para alinhá-los (veja origens de código para v2.29).
O problema que você está enfrentando é que seu fluxo contém sequência de escape ANSI não imprimível que incorpora caracteres imprimíveis. column
, em seguida, falha ao calcular a largura mínima da célula real dessas células e desalinha as próximas células da mesma linha.
Aqui está um exemplo com o código de cor azul <esc>[34m
para a célula A
, usando a coluna v2.29:
$ echo '3[34mA3[0m B\nC D'|column -t
A B
C D
A
cell é visto como um caractere imprimível de altura, pois somente os caracteres de escape são detectados como não imprimíveis.
Por isso, a coluna C recebe sete espaços de preenchimento indesejados.
Observe que esse comportamento não é consistente nos lançamentos da coluna. A versão 2.26 usa wcswidth
para calcular a largura visível das células e leva a um erro diferente alinhamento.