pr -e
faz o mesmo trabalho que o comando expand
. Ele expande as guias de maneira semelhante ao que normalmente aconteceria com o emulador de terminal. TAB é um caractere de controle que os terminais entendem como mover o cursor para a próxima parada de tabulação, ele é destinado a formatação e alinhamento tabular.
Na maioria dos terminais, as paradas de tabulação são, por padrão, a cada 8 colunas. Então, enviar a eles um TAB terá o mesmo efeito que o envio de um número de espaços que variam de 1 a 8, dependendo da posição atual do cursor:
$ printf '%b\n' 'a\tb' 'abcde\tg'
a b
abcde g
A primeira guia moveu as 7 colunas do cursor para a direita e as 3 colunas para a direita.
pr -e
iria substituir os \t
por tantos espaços quantos fossem necessários para ter o mesmo efeito:
$ printf 'abcde\tg\n' | sed l
abcde\tg$
abcde g
$ printf 'abcde\tg\n' | pr -te | sed l
abcde g$
abcde g
Note que o GNU pr
sofre da mesma limitação que o GNU expand
, pois assume que todos os caracteres são feitos de um byte e toma uma coluna para exibir.