AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1519027
Accepted
holograms
holograms
Asked: 2020-01-22 10:10:30 +0800 CST2020-01-22 10:10:30 +0800 CST 2020-01-22 10:10:30 +0800 CST

Compare dois arquivos e remova as duplicatas

  • 772

Qual é a maneira mais fácil de comparar 2 arquivos e excluir as duplicatas encontradas em ambos os arquivos. Estou ciente de que você pode fazer isso facilmente em uma caixa linux com certos comandos, mas como eu faria para conseguir isso em um computador com Windows? Eu pensei que haveria uma maneira de fazer isso no Notepad ++, mas não consigo encontrar uma.

As outras respostas aqui não suportam um usuário no Windows ou não funcionam.

notepad++ notepad
  • 1 1 respostas
  • 5121 Views

1 respostas

  • Voted
  1. Best Answer
    Anaksunaman
    2020-01-26T00:59:04+08:002020-01-26T00:59:04+08:00

    Estou ciente de que você pode fazer isso facilmente em uma caixa Linux com determinados comandos, mas como eu faria isso em um computador Windows?

    GNUWin32

    Se você deseja instalar software adicional de terceiros, o projeto GNUWin (GNUWin32) oferece portas Windows de vários desses utilitários (comandos).

    Os próprios utilitários são oferecidos em pacotes com um único utilitário ou vários utilitários agrupados em cada um. Cada pacote pode ser instalado separadamente 1 , com exceção de alguns pacotes onde os utilitários incluídos dependem de outros.

    O pacote básico que você provavelmente deseja instalar é o pacote CoreUtils, mas também existem outros pacotes disponíveis (dependendo de quais utilitários você deseja usar).

    Pelo que vale a pena, incluí alguns arquivos em lote de exemplo simples usando utilitários GNUWin32 que podem ajudá-lo em outra seção desta resposta.

    Alternativas GNUWin32

    Deixando de lado o Windows Subsystem for Linux (WSL) no Windows 10, existem outras opções possíveis para usar esses tipos de utilitários no Windows, como Git for Windows e Cygwin .

    Essas versões geralmente têm a vantagem de serem mais atualizadas do que suas contrapartes GNUWin32, mas sem dúvida podem faltar facilidade de instalação e uso.


    1 O Projeto GNUWin32 oferece um utilitário de download chamado GetGnuWin32 , que pode lidar com o download e a instalação de todos os pacotes GNUWin32 disponíveis de uma só vez (se essa for sua opção preferida).

    Bloco de Notas++

    Pessoalmente, não conheço nenhum plug-in ou recurso do Notepad ++ que suporte totalmente o que você está tentando realizar. No entanto, o Notepad++ pode executar scripts, comandos e executáveis ​​em lote diretamente por meio do menu Notepad++ Run...F5 ( ) ou do plug-in NppExec e, portanto, pode ser usado (até certo ponto) em conjunto com, por exemplo, os utilitários GNUWin32.

    Com isso dito, não tenho certeza de um bom mecanismo para alimentar arquivos abertos separados como um grupo para qualquer coisa listada acima. Uma solução parcial é combinar os dois arquivos em um, classificá-los, salvar o arquivo e, em seguida, executar uma variação do arquivo de lote de exemplo "Single File Output" fornecido posteriormente nesta resposta em relação ao arquivo salvo.

    O Notepad++ oferece suporte a mais interações de baixo nível com o editor por meio do plug-in Python Script for Notepad++ (baseado em uma versão independente do Python 2.7). Infelizmente, minha experiência com esse plug-in é limitada, por isso não tenho certeza de como ele pode ajudá-lo a obter a funcionalidade desejada (se for o caso).

    Se você quiser experimentar o plug-in Python Script for Notepad++, poderá instalá-lo na interface Plugins → Plugins Admin... no Notepad++.


    Exemplos de lote GNUWin32

    Os exemplos de arquivo batch ( .bat) dados abaixo aproveitam os utilitários GNUWin32 e destinam-se a mostrar algumas abordagens rudimentares para (espero) atingir seus objetivos. Mas são apenas referências. Eles quase certamente podem ser melhorados ou mesmo ignorados em favor de outras abordagens.


    Esses arquivos em lote assumem que o pacote GNUWin32 CoreUtils está instalado (para os utilitários sort, uniqe ). commO exemplo que usa commtambém requer sed (um pacote separado).


    Para completar, os seguintes arquivos de texto (mínimos) foram usados ​​como entrada de teste para os scripts de exemplo descritos abaixo:

    ex. dup1.txt

    abc
    def
    123
    ghi
    

    Linha exclusiva: 123

    --

    ex. dup2.txt

    ghi
    abc
    jkl
    def
    

    Linha exclusiva: jkl


    Lote de Exemplo - Saída de Arquivo Único

    Em conjunto com, por exemplo, o pacote GNUWin32 CoreUtils, você pode criar um arquivo de lote do Windows que suporte arrastar/soltar dois arquivos de texto nele e, em seguida, ter as linhas não duplicadas exibidas como um terceiro arquivo único aberto em ex. Bloco de Notas++:

    ex. nodupes.bat

    @ECHO Off
    
    @REM Two input files (paths)
    gnu-sort %1 %2 | uniq -u > uniq_text.txt
    
    @REM Check our command output.
    :: PAUSE
    
    START notepad++.exe uniq_text.txt
    

    Observe que no exemplo acima, gnu-sorté o utilitário GNUWin32 sort, renomeado para evitar conflitos no Windows (consulte a seção Conflitos do Windows ).


    Embora esse arquivo em lote possa ser usado no modo "arrastar e soltar" por conveniência, você também pode passar os nomes de arquivo relevantes diretamente na linha de comando, por exemplo, nodupes.bat dup1.txt dup2.txt. Isso também é verdade para os outros exemplos de lote nesta seção.


    Lote de Exemplo - Saída de Arquivo Único (Notepad++)

    Para obter algo semelhante mais diretamente no Notepad ++, você pode criar um novo arquivo em lote semelhante ao já descrito acima, mas com uma única entrada:

    ex. nodupes-npp.bat

    @ECHO Off
    
    @REM One input file (path)
    gnu-sort %1 | uniq -u > C:\path\to\uniq_text.txt
    
    START notepad++ C:\path\to\uniq_text.txt
    

    Em seguida, você salvaria esse .batarquivo em um local estático para referência do Notepad ++. Em seguida, no Notepad ++, por exemplo, no menu Executar...F5 ( ), você pode invocar este arquivo em lote para qualquer arquivo (único) que esteja aberto no momento:

    cmd /c C:\path\to\nodupes-npp.bat "$(FULL_CURRENT_PATH)"
    

    No entanto, existem algumas ressalvas a essa abordagem:

    1) O arquivo atual aberto precisaria ser uma versão combinada dos dois arquivos dos quais você deseja comparar os dados.

    2) O arquivo ao qual você deseja aplicar isso deve ser salvo antes de usar esta abordagem .bat/ Executar.... Isto é porque:

    • "$(FULL_CURRENT_PATH)"não está disponível no Notepad++ até que o arquivo seja salvo.

    • Se forem feitas alterações no arquivo, todas as atualizações precisam ser aplicadas ao arquivo real que está sendo acessado (ou seja, a versão em disco, não a versão atualmente aberta no Notepad++).

    Lote de Exemplo - Saída de Arquivo Múltiplo

    Se você quiser linhas únicas divididas (relativamente) por seus arquivos de origem, você pode usar uma combinação de commesed :

    ex. nodupes-separated.bat

    @ECHO Off
    
    @REM Use sed to divide our comm -3 output into two files,
    @REM using a simple sed script (filter.sed).
    
    gnu-sort %1 > sorted_duplicates_1.txt
    gnu-sort %2 > sorted_duplicates_2.txt
    
    comm -3 sorted_duplicates_1.txt sorted_duplicates_2.txt | sed -f filter.sed
    
    @REM Check our command output.
    :: PAUSE
    
    @REM Clean up our temporary files.
    DEL sorted_duplicates_1.txt
    DEL sorted_duplicates_2.txt
    
    @REM These file names are defined in ex. filter.sed
    START notepad++ uniq_text_1.txt
    START notepad++ uniq_text_2.txt
    

    ex. filtro.sed

    /^\t/ {
        s///
        w uniq_text_2.txt
        d
    }
    /^[^\t]/ {
        w uniq_text_1.txt
        d
    }
    

    Observe que, embora commfaça parte do pacote CoreUtils, o sed é um download separado com o GNUWin32 . Lembre-se de que o arquivo de lote acima não alterará seus arquivos originais, mas criará dois novos (portanto, renomeá-los depende de você). Além disso, como está escrito, ex. filter.sedprecisa estar no mesmo diretório do seu arquivo de lote (por exemplo nodupes-separated.bat, ).


    Conflitos do Windows (GNUWin32)

    O GNUWin32 contém alguns utilitários com o mesmo nome dos utilitários ou comandos do Windows (por exemplo sort, ). Isso pode apresentar um problema (leve), pois cada utilitário pode operar de maneira diferente. Os conflitos que conheço pessoalmente no pacote GNUWin32 CoreUtils são:

    • encontro
    • dir
    • eco
    • achar
    • nome de anfitrião
    • ordenar
    • Quem sou eu

    Lembre-se de que também pode haver outros conflitos em pacotes separados, por exemplo, tree.


    Se você deseja acessar as versões do GNUWin32 a partir do caminho do seu ambiente (ou seja, sem digitar o caminho completo), você pode renomear os próprios executáveis ​​GNUWin32 apropriados (recomendado) ou usar arquivos de lote substitutos cujos nomes são diferentes (menos desejáveis). Um arquivo de lote substituto simplesmente conteria, por exemplo:

    ex. gnu-utility.bat

    @ECHO Off
    C:\path\to\GNUWin32\bin\utility.exe %*
    

    Usando versões de utilitários do Windows

    Você pode usar a versão do Windows de um utilitário, mas eles podem exigir o retrabalho de como você aborda as coisas. Por exemplo, o Windows, sortpor padrão, pode receber apenas uma entrada por vez, portanto, o nodupes.batexemplo original acima pode se parecer com o seguinte ao usá-lo:

    ex. nodupes-win-sort.bat

    @ECHO Off
    
    @REM Helps compensate for a minor issue with cat and newlines
    ECHO. > blank
    
    @REM Using Windows sort, not GNUWin32 sort
    cat %1 blank %2 | sort | uniq -u > uniq_text.txt
    
    @REM Clean up our temporary file.
    DEL blank
    
    START notepad++.exe uniq_text.txt
    

    Notas (GNUWin32)

    • Para que os utilitários GNUWin32 funcionem sem especificar um caminho completo, você desejará adicioná-los ao caminho do ambiente no Windows. Caso contrário, você precisará especificar caminhos completos para cada executável (esteja ciente de que isso pode causar dores de cabeça, por exemplo, com encanamento).

    • Os pacotes GNUWin32 são indiscutivelmente melhor colocados em uma pasta "normal" do Windows que você cria (ou seja, não C:\Program Files, C:\Program Files (x86)ou sua Userpasta).

    • Da mesma forma, você deve tentar instalar o GNUWin32 em um caminho sem espaços (por exemplo, C:\Programs\GNUWin32).

    • Embora o pacote GNUWin32 CoreUtils suporte uma variedade de ferramentas básicas, ainda há um grande número de utilitários disponíveis como seus próprios pacotes individuais ou grupos de utilitários . Além disso, alguns utilitários podem funcionar de maneira ligeiramente diferente ou ter opções/sintaxe mais limitadas simplesmente porque o sistema operacional subjacente (Windows) não é, por exemplo, Linux.

    • 0

relate perguntas

  • Mantenha o tipo/extensão de arquivo atual na caixa de diálogo "Salvar como..." do Notepad++

  • Contando vírgulas em uma string de texto e adicionando uma nova linha

  • Removendo informações

  • Notepad ++ excluir até dois pontos para cada linha com substituir tudo

  • NotePad++ User Defined Lang não mostra instruções condicionais

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve