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

Supprimer toutes les lignes dans Notepad++ sauf les lignes contenant un mot dont j'ai besoin ?

Advertisement

J'ai un fichier texte et je veux garder les lignes commencées par <Path>, et supprimer toutes les autres lignes.

Comment puis-je le faire ?

Advertisement

Réponses (10)

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

Il existe un moyen facile d'y parvenir. Vous devez effectuer 2 étapes.

  1. Allez dans le menu Recherche > Trouver… > Sélectionnez l'onglet “Marquer”. Activez les expressions régulières. Recherchez ^<Path> (^ est pour le début de ligne). N'oubliez pas de cocher “Marquer les lignes” et appuyez sur “Marquer tout”

  2. Allez dans le menu “Recherche - Signet - Supprimer les lignes non marquées”.

67
67
67
2013-02-27 16:03:51 +0000

Cela peut en fait se faire en deux étapes à partir du point 6.3. Je pense que cela peut être fait plus tôt que cela, car j'avais 5.9 quand j'ai essayé pour la première fois.

En utilisant le poste de stema comme base de cette réponse. Il y a une étape de moins maintenant. Marquer les lignes et supprimer les lignes non marquées. C'est fait. Des instructions détaillées suivent.

  1. Menu de recherche “Find”. Dans le dialogue “Rechercher”, cliquez sur l'onglet “Marquer”. Activez les expressions régulières. Recherchez ^<Path> (^ est pour “line start”). N'oubliez pas de cocher “Marquer les lignes” et appuyez sur “Marquer tout”

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

30
Advertisement
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. La version généralisée serait ^(?!.*?test).*\r\n. Cela ne supprimera pas la ligne vide à la fin du fichier. Toutes les autres lignes sont supprimées, y compris les multiples lignes vides consécutives.

Explication :

  1. (?!) est une recherche négative. ^.*test.*$ sélectionne la ligne entière qui contient le texte demandé.

  2. [\r\n]{2,} correspond à tout \r\n qui se produit plus d'une fois qu'il s'agit d'une nouvelle ligne de Windows. si vous avez Linux ou un autre système d'exploitation, vous pourriez avoir besoin de vous en occuper. la seconde consiste à le remplacer par une ligne de retour.

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

Il me semble que le moyen le plus simple est d'utiliser la fonction “Trouver tout dans le document actuel” et ensuite soit de copier les résultats dans un nouveau fichier, soit de sélectionner tout et de remplacer dans le fichier actuel.

Cela permettrait de trouver toutes les lignes contenant votre texte et de les répertorier en bas. Il suffit de cliquer avec le bouton droit de la souris sur le résultat de la recherche et de faire un copier/coller.

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

Allez dans le menu Recherche -> Trouver… -> Activer les expressions régulières. Rechercher “^Chemin” (^ est pour le début de ligne).

Cliquez sur le bouton “Trouver tout dans le document actuel”.

La fenêtre “Trouver le résultat” apparaîtra avec toutes les lignes du modèle. Sélectionnez les copier/coller dans un nouvel onglet dans Notepad++.

Dans ce nouvel onglet, allez dans : menu Search -> Replace… -> Activer les expressions régulières.

Dans le champ “Find what :”, utilisez le modèle : “Ligne \d+ : ”. Laissez le champ “Remplacer par :” vide.

Cliquez sur le bouton “Remplacer tout”.

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

A condition que vous vouliez réellement faire 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 Perl Strawberry sous Windows, donc ajustez en conséquence si les résultats ne sont pas ceux que vous attendez.

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

C'est maladroit, mais copiez le tout dans Excel , puis utilisez =IF(LEFT(A1,6)="<Path>",A1,"") et copiez cette formule jusqu'au bout. Ensuite, recopiez tout cela dans le Bloc-notes++. Ce n'est pas idéal, mais c'est assez facile (si vous avez Excel). Attention : Cela ne fonctionnera pas bien avec des lignes indentées (Excel déplacera les colonnes, etc.).

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

Il n'y a pas de moyen facile de faire ce que vous voulez avec Notepad++. Vous devrez soit télécharger un programme sur votre ordinateur, soit écrire un script en VB (je suppose que vous êtes sous Windows).

Vous pouvez faire ce que vous voulez de deux façons avec sed. L'utilitaire sed est un des favoris sur *nix et peut être trouvé pour Windows par les gens formidables de GnuWin http://gnuwin32.sourceforge.net/packages/sed.htm ). Vous devez télécharger ce programme, puis exécuter votre commande à partir de l'invite de commande.

Supprimer toutes les lignes ne contenant pas : sed -i '/^<PATH>/!d' file

Imprimer toutes les lignes contenant vers un nouveau fichier : sed -n '/^<PATH>/p' file > newfile

Je vous suggère d'utiliser l'impression des lignes que vous voulez vers un nouveau fichier. La raison en est que vous n'obtiendrez probablement pas la déclaration regex pour la première fois. L'utilitaire sed utilise la syntaxe de base de l'expression régulière (voir la référence à http://www.regular-expressions.info/reference.html ). Si c'est quelque chose comme un chemin *nix (/var/www) alors vous devrez échapper le caractère / pour que votre regex fonctionne.

Exemple : sed -n '/^\/var\/www/p' file > newfile Cela imprimera toutes les lignes qui commencent par ‘/var/www’. Si j'ai déposé pour échapper au caractère /, alors la commande aurait lancé une erreur. Vous pouvez échapper un caractère spécial (tel que /) avec le caractère backslash \ .

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

Meilleure solution avec la regex remplacer :

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

Et remplacer par rien

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

Utilisez Recherche->Remplacement et entrez une expression régulière comme ^[^].* et remplacez le tout par une chaîne vide en utilisant Regular expression. L'étape suivante consiste à trouver des lignes vides en recherchant \n\n et en les remplaçant par \n en utilisant Extended plusieurs fois jusqu'à 0 occurrences were found. (utilisez \r\n\r\n et \r\n selon le format du fichier). Si vous avez beaucoup de lignes vides à la suite, il est plus rapide d'utiliser \n\n\n\n\n\n\n ou même plus de \n:s dans la chaîne de recherche.

Advertisement
Advertisement