Dubbele rijen verwijderen in Kladblok ++

Is het mogelijk om gedupliceerde rijen in Kladblok ++ te verwijderen, en laat slechts één keer op van een lijn?


Antwoord 1, Autoriteit 100%

Notepad ++ Met de TextFX-plugin kan dit doen, op voorwaarde dat u op de lijn wilt sorteren en de dubbele lijnen tegelijkertijd wilt verwijderen.

Om de TextFX in de nieuwste versie van Notepad ++ te installeren, moet u het vanaf hier downloaden: https://sourceforge.net/projects/npp-plugins/files/textfx

De TextFX-plug-in die wordt gebruikt in oudere versies van Notepad ++ of is het mogelijk om toe te voegen in het menu door naar Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install. In sommige gevallen kan het ook TextFX Charactersworden genoemd, maar dit is hetzelfde.

De vereiste selectievakjes en knoppen verschijnt nu in het menu onder: TextFX -> TextFX Tools.

Zorg ervoor dat “Sorteer uitgang alleen uniek …” wordt gecontroleerd. Selecteer vervolgens een tekstblok (CTRL + A om het volledige document te selecteren). Klik ten slotte op "Lijngevoelige sorteergevoelige" of "Sorteerregels Case Ongevoelig"


Antwoord 2, Autoriteit 91%

Sinds Notepad ++ versie 6 U kunt deze regex gebruiken in het zoeken naar zoeken en vervangen:

^(.*?)$\s+?^(?=.*^\1$)

en vervangen door niets . Dit vertrekt van alle dubbele rijen het laatste voorval in het bestand.

Er is geen sortering nodig voor dat en de duplicante rijen kunnen overal in het bestand zijn!

U moet de opties "Regular Expression" en "Matches Newline" bekijken:

  • ^komt overeen met het begin van de regel.

  • (.*?)komt overeen met alle tekens 0 of meer keer, maar zo weinig mogelijk (het komt exact overeen met de rij, dit is nodig vanwege de optie ". komt overeen met nieuwe regel" ). De overeenkomende rij wordt opgeslagen vanwege de haakjes eromheen en is toegankelijk met \1

  • $komt overeen met het einde van de regel.

  • \s+?^dit deel komt overeen met alle witruimtetekens (nieuwe regels!) tot het begin van de volgende rij ==> Dit verwijdert de nieuwe regels na de overeenkomende rij, zodat er geen lege rij is na de vervanging.

  • (?=.*^\1$)dit is een positieve vooruitblik. Dit is het belangrijkste onderdeel in deze regex, een rij wordt alleen gematcht (en verwijderd), als er precies dezelfde rij ergens anders in het bestand volgt.


Antwoord 3, autoriteit 13%

Als de rijen direct na elkaar staan, kun je een regex-vervanging gebruiken:

Zoekpatroon: ^(.*\r?\n)(\1)+

Vervangen door: \1


Antwoord 4, autoriteit 5%

Kladblok++

-> Venster vervangen

Zorg ervoor dat u in de zoekmodus het keuzerondje Reguliere uitdrukkingheeft geselecteerd

Vind wat:

^(.*)(\r?\n\1)+$

Vervangen door:

$1

Vroeger:

en wij denken daar

en wij denken daar

één regel

Is het mogelijk om

Is het mogelijk om

Na:

en wij denken daar

één regel

Is het mogelijk om


Antwoord 5, autoriteit 5%

Als je de rijvolgorde niet belangrijk vindt (wat volgens mij niet het geval is), dan kun je een Linux/FreeBSD/Mac OS X/Cygwin-box gebruiken en het volgende doen:

$ cat yourfile | sort | uniq > yourfile_nodups

Open het bestand vervolgens opnieuw in Notepad++.


Antwoord 6, autoriteit 4%

In versie 7.8 kunt u dit bereiken zonder plug-ins - Bewerken -> Lijnoperaties -> Verwijder opeenvolgende dubbele regels. U moet het bestand sorteren om dubbele regels in opeenvolgende volgorde te plaatsen voordat dit werkt, maar het werkt als een tierelier.

Sorteeropties zijn beschikbaar onder Bewerken -> Lijnoperaties -> Sorteren op ...


Antwoord 7, autoriteit 2%

De laatste versies van Notepad++ bevatten blijkbaar helemaal geen TextFX-plug-in. Om de plug-in te gebruiken voor het sorteren/elimineren van duplicaten, moet de plug-in worden gedownload en geïnstalleerd (meer betrokken) of toegevoegd met behulp van de plug-inmanager.

A) Gemakkelijke manier (zoals beschreven hier).

Plug-ins -> Plug-inbeheer -> Toon plug-inbeheer -> Beschikbaar tabblad -> TextFX-tekens -> Installeren

B) Meer betrokken manier, als een andere versie nodig is of de gemakkelijke manier niet werkt.

  1. Download de plug-in van SourceForge:

    http://downloads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.zip

  2. Open het zip-bestand en pak NppTextFX.dll

  3. uit

  4. Plaats NppTextFX.dllin de directory met Notepad++-plug-ins, zoals:
    C:\Program Files\Notepad++\plugins

  5. Start Notepad++ en TextFX zal een van de bestandsmenu-items zijn (zoals te zien is in Antwoord #1 hierboven door Colin Pickard)

Volg na het installeren van de TextFX-plug-in de instructies in Antwoord #1 om duplicaten te sorteren en te verwijderen.

Overweeg ook een sneltoets in te stellen met behulp van Instellingen > Shortcut mapperals je deze opdracht vaak gebruikt of een sneltoets wilt repliceren, zoals F9 in TextPad om te sorteren.


Antwoord 8, autoriteit 2%

Vanaf nu is het mogelijk om alleopeenvolgende dubbele regels te verwijderen met de ingebouwde functionaliteit van Kladblok. Sorteer eerst de regels:

Bewerken > Lijnoperaties > "Sorteer regels lexicografisch",

dan

Bewerken > Lijnoperaties > "Verwijder opeenvolgende dubbele regels".

De hierboven voorgestelde regex-oplossing heeft niet alle dubbele regels voor mij verwijderd, maar ook alleen de opeenvolgende.


Antwoord 9

Hiervoor heb je mogelijk een plug-in nodig. U kunt de opdrachtregel cc.ddl(verwijder dubbele regels) van ConyEditproberen. Het is een cross-editor plug-in voor de teksteditors, inclusief Notepad++.

Met ConyEdit op de achtergrond, volg de onderstaande stappen:

  1. voer de opdrachtregel cc.ddlin aan het einde van de tekst.
  2. kopieer de tekst en de opdrachtregel.
  3. plakken, dan zie je wat je wilt.

Voorbeeld


Antwoord 10

Zoek naar de reguliere expressie: \b(\w+)\b([\w\W]*)\b\1\b

Vervang het door: $1$2

Druk op de knop Vervangentotdat er geen overeenkomsten meer zijn voor de reguliere expressie in uw bestand.


Antwoord 11

Geen enkele werkte voor mij.

Een oplossing is:

Vervangen

^(.*)\s+(\r?\n\1\s+)+$

met

\1

Antwoord 12

De plug-inmanager is momenteel niet beschikbaar (wordt niet meegeleverd met de distributie) voor Notepad++. Je moet het handmatig installeren (https://github.com/bruderstein/nppPluginManager/releases) en zelfs als je dat doet, zijn veel van de plug-ins niet meer beschikbaar (geen TextFX) plug-in.

Misschien is er een andere plug-in die de vereiste functionaliteit bevat. Anders dan dat, is de enige manier om dit in Notepad++ te doen het gebruik van een speciale regexvoor het matchen en vervolgens vervangen (Ctrl+ FTabblad Vervangen).

Hoewel er veel functionaliteiten beschikbaar zijn via het menu-item Bewerken(bijsnijden, lege regels verwijderen, sorteren, EOL converteren), is er geen "unieke" bewerking beschikbaar.

Als je Windows 10 hebt, kun je Bash inschakelen(typ gewoon Ubuntu in de Microsoft Store en volg de instructies in de beschrijving om het te installeren) en gebruik cat your_file.txt | sort | uniq > your_file_edited.txt. Natuurlijk moet u zich in dezelfde werkdirectory bevinden als "your_file.txt" of ernaar verwijzen via het pad.


Antwoord 13

Of het bestand nu is gesorteerd of niet, u kunt de onderstaande regex gebruiken om duplicaten te verwijderen die zich overal in uw bestand hebben voorgedaan.

Wat vinden: ^([^\r]*[^\n])(.*?)\r?\n\1$
Vervang door: \1\2
Zoekmodus:

  • "Reguliere expressie"
  • Vink de optie ". komt overeen met nieuwe regel" aan

"Vervang alles" zo veel mogelijk, totdat u "0 voorkomt, vervangen"


Antwoord 14

Moeilijk om dit in NPP te doen.
Betere manier is het volgende:

Download Cygwin hulpprogramma, is het eenvoudige Linux Terminal onder Windows.
Het staat toe om een ​​Linux-opdracht in Windows uit te voeren.
En je hebt Sorteer -U daar.


Antwoord 15

Vanaf Notepad ++ versie 8.1 is er een specifieke opdracht om precies te doen wat deze populaire vraag vraagt. Aan kan gedupliceerde rijen in een tekstbestand verwijderen met het menu-opdracht Edit > Line Operations > Remove Duplicate Lines.

Het is niet nodig om een ​​plug-in te installeren (zoals het momenteel geaccepteerde antwoord suggereert), of sorteer de regels van tevoren, of gebruik de RegEx-syntaxis in de dialoogvenster Vervanging als andere antwoorden.

Other episodes