Para produzir colunas igualmente espaçadas, você pode usar o BSD rs
(também portado para Debian e derivados (pelo menos) e disponível como um pacote lá):
tr -s '[:space:]' '[ *]' | rs -w"$COLUMNS"
Exemplo (linha vertical não faz parte da saída):
$ lorem -w 30 | tr -s '[:space:]' '[ *]' | rs -w60
earum aspernatur ipsa sed ┃
quod sit esse quisquam ┃
animi reprehenderit porro et ┃
delectus neque esse quia ┃
pariatur amet iste voluptatem ┃
provident praesentium et sint ┃
quo animi doloribus veritatis ┃
iusto alias ┃
Você pode adicionar a opção -z
para reduzir o espaço entre as colunas, mas isso não otimiza o número de colunas de acordo. Por exemplo, no acima, dá (com rs -zw60
):
earum aspernatur ipsa sed ┃
quod sit esse quisquam ┃
animi reprehenderit porro et ┃
delectus neque esse quia ┃
pariatur amet iste voluptatem ┃
provident praesentium et sint ┃
quo animi doloribus veritatis ┃
iusto alias ┃
Em vez de:
earum aspernatur ipsa sed quod ┃
sit esse quisquam animi reprehenderit ┃
porro et delectus neque esse ┃
quia pariatur amet iste voluptatem ┃
provident praesentium et sint quo ┃
animi doloribus veritatis iusto alias ┃
Ele também não funciona com caracteres de múltiplos bytes ou caracteres de largura 0 ou largura dupla.
Por padrão, ele deixa pelo menos 2 espaços entre as colunas. Você pode alterá-lo para 1 com -g 1
.