O programa unexpand
não substitui apenas 8 espaços por uma tabulação. Ele substitui espaços e tabulações na linha com a suposição de que uma guia faz com que o terminal usado para exibir a linha seja movido para a próxima tabstop . Normalmente, eles estão em intervalos de 8 espaços, mas, para a maioria dos terminais, o intervalo pode ser alterado (e o intervalo para cada parada pode ser alterado).
O primeiro exemplo de string "A12345678B"
substitui os dígitos 1-8 por espaços. Os primeiros 8 caracteres no resultado são um intervalo de tabulação. Isso deixa um espaço (onde o 8 estava) na primeira parada de tabulação. O programa unexpand
não adiciona um espaço; que sobra após unexpand
substituir os espaços em 1-7 por uma tabulação.
Um usaria unexpand
para converter um arquivo contendo principalmente espaços (ou uma mistura de espaços e tabulações) em um formato consistente usando guias. Um arquivo com muitas linhas que começam com espaços pode ser muito maior que um usando guias pelo mesmo motivo ( recuo ). Além disso, ele é usado para converter um arquivo para usar paradas de tabulação diferentes , por exemplo, para uma tabela cujas colunas se alinham com um conjunto de tabulações, tornando-a mais larga ou mais estreita.
Uma conversão entre intervalos de tabulação diferentes pode ser feita assim:
expand -t 1,6,11,16,21 foo | unexpand -t 1,9,17,25,33 >bar
Além das paradas de tabulação definidas no terminal , alguns programas (como vi
) podem exibir texto com intervalos de tabulação diferentes.
Leitura adicional