Você pode enviar para:
expand -t "$((${COLUMNS:-$(tput cols)} / 2))"
Ou para os colchetes angulares:
awk -v cols="${COLUMNS:-$(tput cols)}" '
BEGIN {width = cols/2-1; space = sprintf("%*s", width, "")}
/^\t/ {print space ">", substr($0, 2); next}
{printf "%-*s<\n", width, $0}'
Se o seu tput
não produzir o número de colunas, você poderá tentar analisar a saída de stty size
ou stty -a
. Ou use zsh -c 'echo $COLUMNS'
(também funciona com mksh
). Não há uma maneira padrão / portátil de obter essa informação.
Se os arquivos de entrada contiverem caracteres de múltiplos bytes ou de largura dupla, YMMV. Dependendo do alinhamento de implementação expand
/ awk
, pode estar desativado.
Isso também pressupõe que os arquivos de entrada não possuem linha que inicie com um caractere de tabulação. Se isso não puder ser garantido, a implementação GNU de comm
tem --output-delimiter
, que você pode usar para especificar uma string única. Ou você pode implementar a funcionalidade comm
em awk
, o que não deve ser muito complicado.