Como se faz para eliminar, a nivel de coluna, um intervalo de caracteres em uma linha com o sed ? [R

1. Como se faz para eliminar, a nivel de coluna, um intervalo de caracteres em uma linha com o sed ? [R

Mestre Kame
mlgrassi

(usa Debian)

Enviado em 25/06/2016 - 01:38h

Necessito saber como utilizar o sed para remover um intervalo de caracteres em uma ou mais linhas de um arquivo.

Por exemplo, supondo que tenho um arquivo teste.txt contendo a linha abaixo:

1234567890remover_por_posicao0987654321

Devem ser removidos os caracteres que compõem a string "remover_por_posicao", isso significa que preciso construir um comando sed que substituirá o conteúdo da posição 11 até a posição 29 resultando em:

2345678900987654321

Veja bem, estou supondo que eu não saiba o conteúdo a ser removido, e sim apenas a posição dos caracteres.

O comando abaixo, por exemplo, funciona para eliminar apenas a posição 11 da linha:

sed -ri 's/^(.{11})(.)(.*)$/\1\3/g' teste.txt

No entanto preciso que seja do 11 ao 29, portanto pergunto, como faço?


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/06/2016 - 03:18h

mlgrassi escreveu:

Necessito saber como utilizar o sed para remover um intervalo de caracteres em uma ou mais linhas de um arquivo.

Por exemplo, supondo que tenho um arquivo teste.txt contendo a linha abaixo:

1234567890remover_por_posicao0987654321

Devem ser removidos os caracteres que compõem a string "remover_por_posicao", isso significa que preciso construir um comando sed que substituirá o conteúdo da posição 11 até a posição 29 resultando em:

2345678900987654321

Veja bem, estou supondo que eu não saiba o conteúdo a ser removido, e sim apenas a posição dos caracteres.

O comando abaixo, por exemplo, funciona para eliminar apenas a posição 11 da linha:

sed -ri 's/^(.{11})(.)(.*)$/\1\3/g' teste.txt

No entanto preciso que seja do 11 ao 29, portanto pergunto, como faço?


Bom dia.
Faça:
sed -r 's/(.{10})(.{19})(.{10})/\1\3/' <<< "1234567890remover_por_posicao0987654321" 

12345678900987654321

sed -r 's/(.{10})(.{19})(.{10})/\1\3/'  teste.txt 


att.:
MarceloOliver



3. Re: Como se faz para eliminar, a nivel de coluna, um intervalo de caracteres em uma linha com o sed ? [R

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/06/2016 - 01:47h

sed -r 's/^(.{11}).{17}(.*)$/\1\2/g' arquivo

Fiz de cabeça.

Esse 17 é o número da quantidade de caracteres a se saltar.
E os retrovisores são \1 e \2 porque usei apenas dois parêntesis.
Caso o 17 esteja errado, conte os caracteres e tente acertar

Retorne se funcionar ou não funcionar.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



4. Re: Como se faz para eliminar, a nivel de coluna, um intervalo de caracteres em uma linha com o sed ? [R

Mestre Kame
mlgrassi

(usa Debian)

Enviado em 25/06/2016 - 02:04h

Ola amigo, infelizmente nao funcionou como o esperado.




5. Re: Como se faz para eliminar, a nivel de coluna, um intervalo de caracteres em uma linha com o sed ? [R

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/06/2016 - 03:36h

mlgrassi escreveu:

Ola amigo, infelizmente nao funcionou como o esperado.



Se for o caso, coloque a opção -i para operar dentro do arquivo.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



6. Re: Como se faz para eliminar, a nivel de coluna, um intervalo de caracteres em uma linha com o sed ? [R

Mestre Kame
mlgrassi

(usa Debian)

Enviado em 25/06/2016 - 09:46h

Muito obrigado, funcionou!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts