Remover strings similares do texto?

2

Estou usando o notepad ++ e sed no Windows.
Eu tenho um texto de arquivo 2000 + linhas, mas às vezes eu tenho essas linhas:

http://www.shragle.com/files/9baa908b/Bvdub-The_First_Day-%2528HN031%2529-2012.rar
http://www.shragle.com/files/9baa908b/Bvdu...1%2529-2012.rar
http://rapidshare.com/files/152133956/2005_-_Candlemass.part1.rar
http://rapidshare.com/files/152133956/2005...emass.part1.rar
http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar
http://rapidshare.com/files/152136400/2005_-_Candlemass.part2.rar
http://rapidshare.com/files/152136400/2005...emass.part2.rar
http://www.shragle.com/files/3e0f3488/Cesa...testHits2CD.rar

Como posso remover essas linhas?

http://www.shragle.com/files/9baa908b/Bvdu...1%2529-2012.rar
http://rapidshare.com/files/152133956/2005...emass.part1.rar
http://rapidshare.com/files/152136400/2005...emass.part2.rar

Eu não quero remover essas linhas:

http://www.shragle.com/files/3e0f3488/Cesa...testHits2CD.rar
http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar

porque estas linhas são únicas e válidas para mim, eu quero remover apenas linhas semelhantes

Linhas semelhantes, eu quero excluir a linha ...

http://rapidshare.com/files/152133956/2005_-_Candlemass.part1.rar
http://rapidshare.com/files/152133956/2005...emass.part1.rar

linha única porque no meu arquivo de texto é apresentado apenas uma vez:

http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar
    
por user143822 09.07.2012 / 19:32

1 resposta

1

O seguinte excluirá uma linha se seus primeiros 40 caracteres forem idênticos aos de um antigo:

Find what:         ((?<=\n)|^)([^\n]{40})([^\n]*\n)(.*\n)?[^\n]*($|\n)
Replace with:      
Search Mode:       Regular expression
. matches newline: checked

Talvez seja necessário clicar em Replace All mais de uma vez.

Como funciona

  • ((?<=\n)|^) verifica se o restante da expressão regular é precedido por uma nova linha ou o início do arquivo.

  • ([^\n]{40})([^\n]*\n) corresponde aos primeiros 40 caracteres de uma linha (armazenados em ) e o restante (armazenado em ).

  • (.*\n)? é qualquer número de linhas (armazenado em ).

  • [^\n]* é uma linha que começa com os mesmos 40 caracteres.

  • ($|\n) verifica se o restante da expressão regular é seguido por uma nova linha ou pelo final do arquivo.

Se esse padrão for encontrado, há uma linha semelhante a .

Ao substituir todos por , essa linha semelhante é excluída.

    
por 09.07.2012 / 20:01

Tags