2011-05-29 15:05:02 +0000 2011-05-29 15:05:02 +0000
221
221

Verwijder alle regels in Notepad++ behalve regels die een woord bevatten dat ik nodig heb?

Ik heb een tekstbestand en wil regels die begonnen zijn met <Path> behouden, en alle andere regels verwijderen.

Hoe kan ik dat doen?

Antwoorden (10)

315
315
315
2011-06-03 20:23:06 +0000

Er is een gemakkelijke manier om dit te bereiken. U moet 2 stappen uitvoeren.

  1. Ga naar het Zoek menu > Zoek… > Selecteer “Mark” Tab. 2. Activeer reguliere uitdrukkingen. Zoek naar ^<Path> (^ is voor regel start). Vergeet niet “Bladwijzerregels” aan te vinken en druk op “Alles markeren”

    1. Ga naar het menu “Zoeken - Bladwijzer - Verwijder ongemarkeerde regels”.
67
67
67
2013-02-27 16:03:51 +0000

Dit kan eigenlijk in twee stappen worden gedaan vanaf 6.3. De Commissie is van mening dat het een goede zaak zou zijn als de lidstaten de nodige maatregelen zouden nemen om de problemen op te lossen. Ik denk dat het eerder kan, want ik had 5.9 toen ik het voor het eerst probeerde.

Met stamapost als basis voor dit antwoord. Er is nu één stap minder. Markeer lijnen en verwijder ongemarkeerde lijnen. Gedaan. Gedetailleerde instructies volgen.

  1. 2. Zoekmenu “Zoeken”. 2. In het Zoek dialoogvenster, klik op de “Markeer” tab. 2. Activeer reguliere uitdrukkingen. 2. Zoek naar ^<Path> (^ is voor lijnstart). Vergeet niet “Bladwijzerregels” aan te vinken en op “Alles markeren”

2 te drukken. 2. Zoekmenu -> Bladwijzer -> Verwijder ongemarkeerde regels.

30
30
30
2013-07-08 16:51:09 +0000

Clean regex only solution

Two step variant

  1. regex replace

  2. replace

Single step variant

Use ^(?!<Path>).*\r\n to replace matches with empty string. De algemene versie zou ^(?!.*?test).*\r\n zijn. Dit verwijdert geen lege regel aan het einde van het bestand. Alle andere regels worden verwijderd, inclusief meerdere opeenvolgende lege regels.

Uitleg:

  1. (?!) is een negatieve look up. ^.*test.*$ selecteert de hele regel die de gevraagde tekst bevat.

  2. [\r\n]{2,} komt overeen met elke \r\n die meer dan eens voorkomt als dit Windows Nieuw is. als je Linux of een ander besturingssysteem hebt moet je hier misschien mee rommelen. de tweede is om het te vervangen door een retourregel.

5
5
5
2015-12-17 11:43:30 +0000

Het lijkt mij dat de eenvoudigste manier is om gewoon de “Zoek alles in huidig document” functie te gebruiken en dan ofwel de resultaten in een nieuw bestand te kopiëren of alles te selecteren en te vervangen in het huidige bestand.

Dit zou alle regels met uw tekst vinden en ze onderaan opnoemen. Klik met de rechtermuisknop op het zoekresultaat en kopieer/plak.

4
4
4
2013-06-21 16:36:49 +0000

Ga naar het menu. Zoek… Activeer reguliere uitdrukkingen. Zoek naar “^Path” (^ is voor regel start).

Klik op de knop “Find all in Current Document”.

Het venster “Find result” verschijnt met alle regels van het patroon. Selecteer kopiëren/plakken naar een nieuw tabblad in Notepad++.

In dit nieuwe tabblad, ga naar: menu Search -> Replace… -> Activeer reguliere uitdrukkingen.

In het veld “Zoek wat:”, gebruik het patroon: “Regel \d+: ”. Laat het veld “Vervangen door:” leeg.

Klik op de “Vervang alles” knop.

3
3
3
2011-05-30 01:02:36 +0000

Op voorwaarde dat u daadwerkelijk wilt matchen met <Path> en niet met een bestandssysteem pad, kunt u dit proberen vanaf een opdrachtregel met behulp van Perl:

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

Het werkte met Strawberry Perl op Windows, dus pas het aan als de resultaten niet zijn wat u verwacht.

3
3
3
2011-05-29 18:07:54 +0000

Het is onhandig, maar kopieer het allemaal naar Excel , en gebruik dan =IF(LEFT(A1,6)="<Path>",A1,"") en kopieer die formule helemaal naar beneden. Kopieer dat dan terug naar Notepad++. Het is niet ideaal, maar het is vrij eenvoudig (als je Excel hebt). Waarschuwing: Het zal niet goed werken met ingesprongen lijnen (Excel zal de kolommen verschuiven, etc.).

2
2
2
2011-05-30 03:00:09 +0000

Er is geen gemakkelijke manier om te doen wat je wilt met Notepad++. Je moet ofwel een programma downloaden naar je computer ofwel iets in VB (ik neem aan dat je op Windows zit).

Je kunt op twee manieren doen wat je wilt met sed. Het hulpprogramma sed is een favoriet op *nix en kan voor Windows gevonden worden bij de grote mensen van GnuWin http://gnuwin32.sourceforge.net/packages/sed.htm ). Je zou dit programma downloaden, en dan je commando uitvoeren vanaf de commando prompt.

Verwijder alle regels die niet bevatten : sed -i '/^<PATH>/!d' file

Print alle regels die een nieuw bestand bevatten: sed -n '/^<PATH>/p' file > newfile

Ik stel voor dat je de regels die je wilt afdrukken naar een nieuw bestand gebruikt. De reden hiervoor is dat je waarschijnlijk niet voor het eerst het regex statement krijgt. Het hulpprogramma sed gebruikt Regular Expression Basic Syntax (zie de referentie op http://www.regular-expressions.info/reference.html ). Als er zoiets is als een *nix pad (/var/www) dan zul je het / karakter moeten ontlopen om je regex te laten werken.

Voorbeeld: sed -n '/^\/var\/www/p' file > newfile Dit zal alle regels die beginnen met ‘/var/www’ uitprinten. Als ik heb gearchiveerd om te ontsnappen aan het / karakter, dan zou het commando een fout hebben gegooid. Je kunt een speciaal karakter (zoals /) met het backslash karakter ontlopen.

1
1
1
2018-05-01 14:37:57 +0000

Betere oplossing met regex vervangen:

(?!^.*SOMETEXT.*$)^.+\r?\n

en vervangen door niets

0
0
0
2011-05-29 15:16:28 +0000

Gebruik Search->Replace en voer een reguliere expressie in zoals ^[^].* en vervang alles door een lege tekenreeks met behulp van Regular expression. De volgende stap is het vinden van lege regels om \n\n te vervangen door \n met behulp van Extended meerdere malen tot 0 occurrences were found. (gebruik \r\n\r\n en \r\n afhankelijk van het bestandsformaat). Als u zeer veel lege regels op een rij heeft, is het sneller om \n\n\n\n\n\n\n of zelfs meer \n:s te gebruiken in de zoekstring.