Uma maneira de fazer isso pode envolver unexpand
. A descrição para ele e o utilitário expand
podem ser encontrados aqui :
- O utilitário
unexpand
deve copiar arquivos ou entrada padrão para saída padrão, convertendo <blank>
caracteres no início de cada linha no número máximo de <tab>
caracteres seguido pelo número mínimo de <space>
caracteres necessários para preencha as mesmas posições de coluna originalmente preenchidas pelos caracteres <blank>
traduzidos. Por padrão, as tabstops devem ser definidas na posição da oitava coluna. Cada <backspace>
será copiado para a saída e fará com que a contagem da posição da coluna para cálculos de tabulação seja diminuída; a contagem nunca deve ser decrementada para um valor menor que um.
Você provavelmente desejaria a opção -a
.
-
-a
-
Além de traduzir <blank>
caracteres no início de cada linha, converta todas as seqüências de dois ou mais caracteres <blank>
imediatamente anteriores a uma parada de tabulação ao número máximo de <tab>
caracteres seguidos pelo número mínimo de <space>
caracteres necessário para preencher as mesmas posições de coluna originalmente preenchidas pelos caracteres <blank>
traduzidos.
É um utilitário simples para converter muitos espaços em sequência em guias. Dessa forma você poderia ...
unexpand -a <<\IN | cut -f1
16 SQL*Plus vilconv1 dox-conv2
16 TOAD background query session Disha WORKGROUP\AD
IN
... que imprime ...
16 SQL*Plus
16 TOAD background query session
Eu só uso cut
, mas se você quiser, pode usar awk
ou qualquer outra coisa. Eu só sugiro isso porque você quase já o instalou, é muito simples de usar e muito rápido. Ele resolve o problema de espaço trocando delimitadores - e faz isso com muita facilidade.
Eu também uso um documento aqui apenas para mostrar como funciona, mas você provavelmente desejaria fazer isso ...
unexpand -a <infile | filter program