
		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 ---