Excluir espaços em arquivo posicional e substituir por ponto e vírgula [RESOLVIDO]

1. Excluir espaços em arquivo posicional e substituir por ponto e vírgula [RESOLVIDO]

tayna vallejos
taynagarciap

(usa Outra)

Enviado em 28/10/2015 - 08:45h

Galera bom dia,
Sou novata em shell script e preciso de uma ajuda!!
Tenho um arquivo posicional em que da posição 100 até a 150 são espaços em branco (isso ocorre em várias posições do arquivo e preciso retirar), preciso retirar esses espaços em branco e exatamente nessa posição 100 substituir por um ; .

É possível fazer isso em shell?

Obrigada!


  


2. MELHOR RESPOSTA

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 28/10/2015 - 15:56h

Olá,

Deixa eu ver se entendi direito: Vc tem um arquivo que contém varias linhas. Cada linha possui mais de 150 caracteres, que :
Do caractere 1 ao 100: são dados que deseja manter ( que também possuem espaços)
Do caractere 100 ao 150: são espaços em branco que deseja trocar todos por apenas um " ; ".
Do caractere 150 até o fim da linha : são dados que vc deseja manter (que também possuem espaços)

É isso?, se sim, acredito que o comando abaixo resolve:

sed -r 's/(.{100})(.{50})(.*$)/\1;\3/g' arquivo.txt  


Explicando o comando:

A sintaxe utilizada foi : 's/isso/por isso/g'

sed -r : A opção -r do sed, ativa o recurso de expressões regulares extendidas)
s/ : Substituir
(^.{100})(.{50})(.*$) : Essa é parte da sintaxe " isso " - Não entrarei em detalhes sobre expressões regulares, mas o ^ indica o começo da linha, o $ indica o fim da linha, o . (ponto) significa qualquer caractere, os parenteses () servem para agrupar expressoẽs e as chaves {} servem para quantificar, neste caso, a tradução seria assim:
1° GRUPO: São os 100 primeiros caracteres
2° GRUPO: São os caracteres de 101 á 150
3° GRUPO: São os caracteres de 151 até o fim da linha

\1;\3/g : Essa é parte da sintaxe " por isso " - Os grupos criados da primeira parte podem ser acessados usando \número (barra invertida e o numero do grupo), no caso a tradução ficou assim : Grupo 1 seguido de um ; (ponto e virgula), seguido do grupo 3.

Bom, acho que é isso. Se tiver dúvidas dá um toks.

abs



abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

3. Re: Excluir espaços em arquivo posicional e substituir por ponto e vírgula [RESOLVIDO]

tayna vallejos
taynagarciap

(usa Outra)

Enviado em 28/10/2015 - 16:02h


Muito obrigada tonyhts, funcionou!


4. Re: Excluir espaços em arquivo posicional e substituir por ponto e vírgula [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 28/10/2015 - 16:14h

Que bom !

Editei o post e adicionei a explicação do comando para te ajudar nas próximas.

Não esqueça de marcar como resolvido :-)

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts