Respostas:
O Notepad ++ pode fazer isso, desde que você queira classificar por linha e remover as linhas duplicadas ao mesmo tempo.
Você precisará do plug-in TextFX. Isso costumava ser incluído nas versões mais antigas do Notepad ++, mas se você tiver uma versão mais recente, poderá adicioná-la no menu acessando Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install
. Em alguns casos, também pode ser chamado TextFX Characters
, mas é a mesma coisa
As caixas de seleção e botões necessário agora aparecerá no menu em: TextFX -> TextFX Tools
.
Verifique se a opção "classificar saídas apenas únicas ..." está marcada. Em seguida, selecione um bloco de texto ( Ctrl+ Apara selecionar o documento inteiro). Por fim, clique em "classificar linhas com distinção entre maiúsculas e minúsculas" ou "classificar linhas com distinção entre maiúsculas e minúsculas"
Desde o Notepad ++ versão 6, você pode usar esse regex na pesquisa e substituir o diálogo:
^(.*?)$\s+?^(?=.*^\1$)
e substitua por nada . Isso deixa de todas as linhas duplicadas a última ocorrência no arquivo.
Nenhuma classificação é necessária para isso e as linhas duplicadas podem estar em qualquer lugar do arquivo!
Você precisa verificar as opções "Expressão regular" e ". Corresponde à nova linha":
^
corresponde ao início da linha.
(.*?)
corresponde a qualquer caractere 0 ou mais vezes, mas o mínimo possível (corresponde exatamente à linha, isso é necessário devido à opção ". corresponde à nova linha"). A linha correspondente é armazenada, devido aos colchetes ao redor e acessíveis usando\1
$
corresponde ao final da linha.
\s+?^
esta parte corresponde a todos os caracteres de espaço em branco (novas linhas!) até o início da próxima linha ==> Isso remove as novas linhas após a linha correspondente, para que nenhuma linha vazia esteja lá após a substituição.
(?=.*^\1$)
Esta é uma afirmação positiva. Esta é a parte importante desse regex, uma linha é correspondida apenas (e removida) quando existe exatamente a mesma linha seguindo em outro lugar no arquivo.
. matches newline
fez o truque.
Se as linhas estiverem imediatamente uma após a outra, você poderá usar uma substituição de regex:
Padrão de Pesquisa: ^(.*\r?\n)(\1)+
Substituir com: \1
^(.*\r?\n)(\1)+
Notepad ++
-> Substituir janela
Verifique se no modo Pesquisa você selecionou o botão de opção Expressão regular
Encontre o que:
^ (. *) (\ r? \ n \ 1) + $
Substituir com:
$ 1
Antes:
e nós pensamos lá
e nós pensamos lá
única linha
é possível
é possível
Depois de:
e nós pensamos lá
única linha
é possível
Se você não se importa com a ordem das linhas (o que eu acho que não), use uma caixa Linux / FreeBSD / Mac OS X / Cygwin e faça:
$ cat yourfile | sort | uniq > yourfile_nodups
Em seguida, abra o arquivo novamente no Notepad ++.
'cat' is not recognized as an internal or external command, operable program or batch file.
cat yourfile | sort -Unique
As últimas versões do Notepad ++ aparentemente não incluem o plugin TextFX. Para usar o plug-in para classificar / eliminar duplicatas, o plug-in deve ser baixado e instalado (mais envolvido) ou adicionado usando o gerenciador de plug-ins.
A) Maneira fácil (como descrito aqui ).
Plugins -> Gerenciador de Plugins -> Mostrar Gerenciador de Plugins -> guia Disponível -> Caracteres TextFX -> Instalar
B) Maneira mais envolvida, se outra versão for necessária ou a maneira mais fácil não funcionar.
Faça o download do plugin no SourceForge:
Abra o arquivo zip e extraia o NppTextFX.dll
Coloque o NppTextFX.dll no diretório de plugins do Notepad ++, como:
C: \ Arquivos de Programas \ Notepad ++ \ plugins
Inicie o Notepad ++ e o TextFX será um dos itens de menu do arquivo (como visto na Resposta nº 1 acima, por Colin Pickard)
Após instalar o plug-in TextFX, siga as instruções na resposta nº 1 para classificar e remover duplicatas.
Além disso, considere configurar um atalho de teclado usando Configurações> Mapeador de atalhos se você usar esse comando com freqüência ou desejar replicar um atalho de teclado, como F9 no TextPad para classificação.
C:\Users\<your_user>\AppData\Local\Notepad++\plugins\NppTextFX
. Fora isso, isso ainda funciona bem.
Na versão 7.8, você pode fazer isso sem nenhum plug-in - Editar -> Operações de linha -> Remover linhas duplicadas consecutivas. Você precisará classificar o arquivo para colocar linhas duplicadas em ordem consecutiva antes que isso funcione, mas funciona como um encanto.
As opções de classificação estão disponíveis em Editar -> Operações de linha -> Classificar por ...
Você pode precisar de um plugin para fazer isso. Você pode tentar a linha de comando cc.ddl
(excluir linhas duplicadas) do ConyEdit . É um plug-in de editor cruzado para os editores de texto, incluindo o Notepad ++.
Com o ConyEdit em execução em segundo plano, siga as etapas abaixo:
cc.ddl
no final do texto. Procure a expressão regular: \b(\w+)\b([\w\W]*)\b\1\b
Substitua por: $1$2
Pressione o botão Substituir até que não haja mais correspondências para a expressão regular em seu arquivo.
Nenhum funcionou para mim.
Uma solução é:
Substituir
^(.*)\s+(\r?\n\1\s+)+$
com
\1
^(.*)\s+(\r?\n\1\s+)+$
e não ^(.*)\s*(\r?\n\1\s*)+$
?
O gerenciador de plug-ins está indisponível no momento (não vem com a distribuição) para o Notepad ++. Você deve instalá-lo manualmente ( https://github.com/bruderstein/nppPluginManager/releases ) e, mesmo se o fizer, muitos plug-ins não estarão mais disponíveis (nenhum TextFX).
Talvez haja outro plugin que contenha a funcionalidade necessária. Fora isso, a única maneira de fazer isso no Notepad ++ é usar um regex especial para fazer a correspondência e depois substituir (Ctrl + F→ guia Substituir ).
Embora existam muitas funcionalidades disponíveis no item de menu Editar (aparar, remover linhas vazias, classificar, converter EOL), não há operação "única" disponível.
Se você possui o Windows 10, pode ativar o Bash (basta digitar Ubuntu na Microsoft Store e siga as instruções na descrição para instalá-lo) e usá-lo cat your_file.txt | sort | uniq > your_file_edited.txt
. É claro que você deve estar no mesmo diretório de trabalho que "seu_arquivo.txt" ou fazer referência a ele pelo caminho.