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.