As tabulações armazenam um movimento até uma parada de tabulação, não uma quantidade fixa de espaços visíveis. Sua largura exibida depende da coluna atual e da configuração das paradas. Os comandos expand e unexpand convertem entre caracteres de tabulação e espaços levando essas posições em conta.
Text-Fu · Lição 10
expand e unexpand
Aprenda como as paradas de tabulação controlam a conversão entre tabulações e espaços com expand e unexpand.
Conversão de Tabulações em Espaços
expand lê a entrada, substitui as tabulações pelos espaços necessários para alcançar as paradas adequadas e grava o resultado em stdout:
$ expand sample.txt
Por padrão, as paradas ocorrem a cada 8 colunas. Assim, uma tabulação na coluna 1 se expande de forma diferente de uma na coluna 6; ela nem sempre é substituída por oito espaços.
Com as configurações padrão, como expand substitui um caractere de tabulação?
Escolha das Paradas de Tabulação
Use -t NUMBER para colocar paradas a cada quantidade especificada de colunas. Para paradas a cada quatro colunas:
$ expand -t 4 sample.txt
O GNU expand também aceita uma lista de posições explícitas separadas por vírgulas. Use -i quando apenas as tabulações anteriores ao primeiro caractere não vazio de cada linha devam ser convertidas.
Qual comando converte tabulações usando paradas a cada quatro colunas?
Salvamento Seguro da Saída Convertida
expand não edita seu arquivo de entrada. Redirecione stdout para outro caminho quando quiser salvar o texto convertido:
$ expand sample.txt > result.txt
Não use expand sample.txt > sample.txt. O shell trunca o destino antes que expand possa lê-lo; assim, os dados de origem podem ser perdidos. Depois de verificar um resultado gravado separadamente, você pode substituir o original conscientemente com uma etapa apropriada de gerenciamento de arquivos.
Qual comando salva o texto expandido sem truncar sample.txt antes de sua leitura?
Conversão de Espaços em Tabulações
unexpand substitui espaços elegíveis por tabulações, preservando o alinhamento nas paradas escolhidas. Por padrão, o GNU unexpand converte apenas os espaços iniciais anteriores ao primeiro caractere não vazio de uma linha:
$ unexpand result.txt
Use -a para considerar os espaços adequados em toda a linha:
$ unexpand -a result.txt
Isso não substitui simplesmente todo grupo de oito espaços. A conversão depende das posições das colunas e das paradas, assim como em expand. Use -t 4 ou outra especificação quando o arquivo seguir uma convenção diferente.
Sem -a, quais espaços o GNU unexpand normalmente considera para conversão?
Qual opção instrui o GNU unexpand a considerar também os espaços depois do primeiro caractere não vazio?
Os dois comandos leem stdin quando nenhum arquivo é indicado e, portanto, podem ser usados em pipelines. Lembre-se de que converter para espaços e de volta pode não reconstruir a escolha original entre tabulações e espaços, mesmo que o alinhamento exibido permaneça igual.
Lição concluída
Você concluiu expand e unexpand
Agora você sabe converter tabulações e espaços preservando o alinhamento das paradas.
Expanda tabulações até a próxima parada configurada.
Defina paradas personalizadas com
-t.Salve a saída em outro arquivo antes de substituir a entrada.
Converta os espaços iniciais com
unexpandpor padrão.Use
-aquando os espaços de toda a linha devam ser considerados.
Salve seu progresso
Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.
Criar uma conta gratuita