Acrescentando espaços vazios ao final de cada linha [RESOLVIDO]

1. Acrescentando espaços vazios ao final de cada linha [RESOLVIDO]

Marcelo Romeiro
marcelo.romeiro

(usa Ubuntu)

Enviado em 08/03/2012 - 16:21h

Boa tarde, galera.

To tendo um problema que talvez seja simples, mas por estar iniciando com shell script, estou tendo dificuldades.

Eu possuo um arquivo, em que os campos são delimitados pelo tamanho da coluna. Algo, ao meu ver, um tanto arcaico - mas isso seria uma discussão para outro momento.

O arquivo original, possui 166 colunas, porém o sistema que irá ler o arquivo, vai procurar informação até a coluna 179. Logo, todos as linhas deverão ser acrescida com mais 13 colunas, que nesse caso seriam simplesmente espaços vazios.

Eu já possuo dentro dessa rotina, uma aplicação do AWK, logo tentei acrescentar esses espaços por dentro dessa estrutura AWK, porém por não conhecer muito, não obtive êxito.
Devo lembrar também que os arquivos são muito grandes. Digo isso, pois os arquivos, contendo somente texto, possuem 100 MB - isso um dos menores.

Eu considero algo simples, teoricamente falando, porém tecnicamente, em AWK, não consegui fazer.

Espero que possam me ajudar.

Abraços,

Marcelo


  


2. Re: Acrescentando espaços vazios ao final de cada linha [RESOLVIDO]

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 08/03/2012 - 18:36h

Eu entendi que vc tem um arquivo com 166 colunas , porém vc precisa passar um arquivo com 179 colunas para um sistema que vc tem.

Crie um arquivo script.awk
Digite awk -f script.awk arquivo_que_vc_vai_ler.txt > saida.txt


# conteudo do script
{
printf("%s",$0);
if( NF == 166 ){
for(i=1; i<=13; i++){
printf("\t.");
}
printf("\n");
}
else
printf("\n");
}



Eu resolvi colocar pontos para completar as colunas para ficar visível, mas vc pode substituir por outro caracter.


3. Re: Acrescentando espaços vazios ao final de cada linha [RESOLVIDO]

Marcelo Romeiro
marcelo.romeiro

(usa Ubuntu)

Enviado em 09/03/2012 - 11:09h

Não consegui assim não. Além do mais eu não posso ter outro caracter sem ser espaço vazio.


4. Re: Acrescentando espaços vazios ao final de cada linha [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 09/03/2012 - 12:11h

cara ... a melhor performance que consegui foi assim

awk '{printf"%+178s\n",$0"............."}' teste > teste1

(substitua os treze pontos por 13 espaços, coloquei pontos pois a pagina aqui reduz para um unico espaço)



5. Re: Acrescentando espaços vazios ao final de cada linha [RESOLVIDO]

Marcelo Romeiro
marcelo.romeiro

(usa Ubuntu)

Enviado em 21/03/2012 - 11:35h

fdmarp escreveu:

cara ... a melhor performance que consegui foi assim

awk '{printf"%+178s\n",$0"............."}' teste > teste1

(substitua os treze pontos por 13 espaços, coloquei pontos pois a pagina aqui reduz para um unico espaço)


Eu consegui resolver, porém eu não coloquei esse 178.
Coloquei apenas o awk 'printf $0 ".............\n";' teste > teste1 e funcionou perfeitamente.
Mas obrigado, sua dica foi fundamental.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts