Question Supprimer toutes les lignes dans Notepad ++ à l'exception des lignes contenant un mot dont j'ai besoin?


J'ai un fichier texte et je veux que les lignes commencent par <Path>et supprimez toutes les autres lignes.

Comment puis-je le faire?


174
2018-05-29 15:05


origine


En relation: stackoverflow.com/questions/8264391/... - Cees Timmerman
Le plugin LineFilter2 est également facile à utiliser. - Karsten


Réponses:


Il y a un moyen facile d'y parvenir. Vous devez effectuer 3 étapes.

  1. Allez dans le menu Rechercher> Rechercher ...> Sélectionnez l'onglet "Marquer". Activer les expressions régulières Rechercher ^<Path> (^ est pour le début de ligne). N'oubliez pas de cocher "Bookmark lines" et appuyez sur "Mark All"

    ==> Toutes les lignes que vous voulez garder un signet

  2. Aller au menu "Recherche - Signet - Inverse Bookmark"

    ==> Toutes les lignes que vous souhaitez supprimer sont mises en signet.

  3. Aller au menu "Recherche - Signet - Supprimer les lignes marquées"

    ==> Toutes les lignes marquées sont supprimées.


252
2018-06-03 20:23



+1. Nice, ne savait pas à ce sujet. Il existe également des options pour "Supprimer les lignes non marquées" ou "Couper / copier les lignes marquées" qui peuvent gagner du temps. - deizel
J'ai eu des problèmes au début parce que ma version (6.2.3) de Notepad ++ n'a pas d'élément de menu nommé "Mark Tab". Au lieu de cela, vous devez aller à "Rechercher" -> "Rechercher ..." -> cliquez sur l'onglet "Marquer". Et vous ne devez plus inverser les signets. Notepad ++ a maintenant "Supprimer les lignes non marquées". Mais ton conseil m'a beaucoup aidé! Merci! - Adam
Vous pouvez ignorer l'étape 2, car il est (au moins depuis la version 6.4.5) possible de choisir "Supprimer les lignes non marquées". - Nailuj
J'utilise Notepad ++ depuis si longtemps et je n'ai jamais connu ce que sont les "Signets" avant. Étonnant à quel point cet outil est puissant et à quel point je le connais. - Danubian Sailor
Vous êtes un génie. Ceci est juste un autre exemple choquant de la façon de connaître l'outil que vous utilisez pour de vrai. - Marcello Grechi Lins


Cela peut être fait en deux étapes à partir de 6.3. Je pense que cela peut être fait plus tôt que cela, car j'avais 5,9 ans lorsque je l'ai essayé pour la première fois.

Utiliser le post de stema comme base de cette réponse. Il y a un pas de moins maintenant. Marquer les lignes et supprimer les lignes non marquées. Terminé. Des instructions détaillées suivent.

  1. Rechercher dans le menu "Rechercher". Dans la boîte de dialogue Rechercher, cliquez sur l'onglet "Marquer". Activer les expressions régulières Recherchez ^ (^ est pour le début de ligne). N'oubliez pas de cocher "Bookmark lines" et appuyez sur "Mark All"

    ==> Toutes les lignes que vous voulez garder un signet

  2. Menu Rechercher -> Signet -> Supprimer les lignes non marquées.

    ==> Tous NON Les lignes marquées sont supprimées.


56
2018-02-27 16:03



Cela m'a pris 10 secondes tandis que l'autre solution m'a pris plus de 20 secondes. THX! - Black


Clean regex only solution

Variante en deux étapes

  1. regex remplacer

    (?!^.*test.*$)^.+
    

    remplacer le test par le texte demandé

  2. remplacer

    [\r\n]{2,}
    

    avec \r\n

Variante pas à pas

Utilisation ^(?!<Path>).*\r\n pour remplacer les correspondances par une chaîne vide. La version généralisée serait ^(?!.*?test).*\r\n. Cela ne supprimera pas les lignes vides à la fin du fichier. Toutes les autres lignes sont supprimées, y compris plusieurs lignes vides consécutives.

Explication:

  1. (?!) est une recherche négative. ^.*test.*$  sélectionne toute la ligne contenant le texte demandé.

  2. [\r\n]{2,} correspond à tout \r\n cela se produit plus d'une fois que c'est une nouvelle ligne Windows. Si vous avez Linux ou un autre système d'exploitation, vous devrez peut-être vous en mêler. le second est de le remplacer par une ligne de retour.


25
2017-07-08 16:51



Note aux peuples: Parfois, l'expression rationnelle avec fin de ligne (EOL) "ne fonctionne pas". le \r\n EOL mentionné dans l'article est ce que Windows utilise et peut donc être ou ne pas être ce que vous recherchez. Souvent sur les environnements Linux, il n'y a que \n, ou dans les environnements Mac juste \r, donc si vous tirez un fichier de l'un ou l'autre, ce ne sera pas le style EOL de Windows. Cependant, si vous téléchargez via des déclencheurs FileZilla et en mode ASCII, cela peut les changer de nouveau dans Windows EOL (comme \n dans \r\n). Donc, si regex ne fonctionne pas, vérifiez le style EOL en allant dans "Affichage> Afficher les symboles> Afficher la fin de la ligne". CR = \r. LF = \n. - dhaupin


Il me semble que le plus simple est d'utiliser la fonctionnalité "Rechercher tout dans le document actuel", puis de copier les résultats dans un nouveau fichier ou de sélectionner tout et de remplacer le résultat actuel.

Cela trouverait toutes les lignes contenant votre texte et les répertorierait en bas. Cliquez avec le bouton droit sur le résultat de la recherche et copiez / collez.


5
2017-12-17 11:43



Vous devez supprimer les numéros de ligne en remplaçant \tLine [\d]*: . Encore une bonne réponse. - Noumenon


Aller au menu Chercher -> Trouver... -> Activer les expressions régulières. Rechercher "^Chemin"(^ est pour le début de ligne).

Cliquez sur le bouton "Rechercher tout dans le document actuel".

La fenêtre "Rechercher le résultat" apparaîtra avec toutes les lignes du motif. Sélectionnez les copier / coller dans un nouvel onglet dans Notepad ++.

Dans ce nouvel onglet, accédez à: menu Chercher -> Remplacer... -> Activer les expressions régulières.

Dans le champ "Find what:", utilisez le motif: "Line \ d +:". Laissez le champ "Remplacer par:" vide.

Cliquez sur le bouton "Remplacer tout".


4
2018-06-21 16:36





Si vous voulez réellement correspondre <Path> et non un chemin de système de fichiers, vous pouvez essayer cela depuis une ligne de commande en utilisant Perl:

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

Cela a fonctionné avec Strawberry Perl sur Windows, donc ajustez en conséquence si les résultats ne sont pas ce que vous attendez.


3
2018-05-30 01:02





C'est maladroit, mais copiez le tout pour Exceller, puis utilisez =IF(LEFT(A1,6)="<Path>",A1,"") et copiez cette formule tout en bas. Ensuite, copiez-le dans Notepad ++. Ce n'est pas idéal, mais c'est assez facile (si vous avez Excel). Attention: cela ne fonctionnera pas bien avec les lignes en retrait (Excel décale les colonnes, etc.).


3
2018-05-29 18:07



Quand il y a plusieurs façons de gérer cette tâche directement, pourquoi voudriez-vous copier de manière destructive dans une autre application, y procéder et la transférer? - Baldrickk