Não consigo entender completamente como o -t
parâmetro do expand
comando funciona. Abaixo está um trecho de sua página de manual.
NAME
expand - convert tabs to spaces
...
-t, --tabs=N
have tabs N characters apart, not 8
O que exatamente significa ter tabs N caracteres separados ? Eu fiz alguns testes.
root@u2004:~# printf "a\tb\n"
a b
root@u2004:~# printf "a\tb\n" | od -a
0000000 a ht b nl
0000004
root@u2004:~# printf "a\tb\n" | expand | od -a
0000000 a sp sp sp sp sp sp sp b nl
0000012
root@u2004:~# printf "a\tb\n" | expand -t 4 | od -a
0000000 a sp sp sp b nl
0000006
root@u2004:~# printf "a\tb\n" | expand -t 5 | od -a
0000000 a sp sp sp sp b nl
0000007
root@u2004:~#
Como você pode ver, quando eu passo -t 4
, a tabulação foi substituída por 3 espaços. Então, na realidade, "ter guias com 4 caracteres de distância" significa apenas que as guias foram substituídas por 3 espaços? Eu não consigo entender. Btw, eu não sou um falante nativo de inglês e é possível que esta seja uma pergunta relacionada ao inglês.
Refere-se a paradas de tabulação , as posições para onde a tabulação salta. Com
-t 4
, há uma parada de tabulação a cada quatro caracteres.Uma tabulação não insere um número fixo de espaços, mas salta para a próxima posição, então a quantidade de espaços adicionados depende de quanto tempo o texto antes da tabulação era. Por exemplo:
O objetivo, é claro, é alinhar as colunas:
Então, para tentar representá-lo visualmente, o posicionamento do tab-stop é assim,
^
mostrando as paradas:(É claro que você não pode tabular para o início, então o primeiro não está realmente lá.)
Isso fica confuso se um campo for maior que a distância da parada de tabulação, mas
expand
usa uma lista de posições de coluna como alternativa, por exemplo, isso tem uma coluna de quatro larguras e uma coluna de oito larguras:Lá, as paradas são assim:
Comecei a numeração a partir do zero, para que as posições correspondam aos números fornecidos na linha de comando.