Comment ajouter un nombre à la fin de chaque ligne dans Notepad ++?

37

J'ai 23 000 lignes et je dois ajouter le nombre 1à la fin de chaque ligne.

Comment puis-je faire ceci?

Maintenant:

[line1]TEXT
[line2]TEXT

Ce que je voudrais:

[line1]TEXT1
[line2]TEXT1
falsky
la source
2
Plus intéressant; Comment affecteriez-vous des numéros séquentiels à des lignes séquentielles? :-)
Carl Witthoft le
1
@CarlWitthoft Numérotez les lignes avec le package TextFX (TextFx> Outils TextFx> Insérer des numéros de ligne), puis déplacez les numéros de ligne dans l'EOL avec une expression rationnelle.
DavidPostill
2
S'il y a une ligne vide entre 2 lignes de texte, cette ligne devrait-elle également avoir un 1?
Nzall
4
:%s/$/1/. Oh, attends, c'est Vim . ;-) (qui est également disponible sous Windows.)
DevSolar le
1
@DevSolar Alternativement, :g/$/norm A1. Ou le plus complexe mais plus sophistiqué gg$<C-v>G$A1<esc>. Ou même le certes odieux ggqqqqqA1<esc>j@qq@q. Plus d'une façon de le faire: P
Doorknob

Réponses:

28

Comment ajouter un nombre à la fin de chaque ligne dans Notepad ++?

  • Menu "Rechercher"> "Remplacer" (ou Ctrl+ H)

  • Définir "Trouver quoi" \r\n

  • Définissez "Remplacer par" sur 1\r\n

  • Activer "expression régulière" ou "étendu"

    Remarque - "Expression régulière" est un sur-ensemble de "Etendu", de sorte que dans ce cas particulier, vous l'utilisez.

  • Cliquez sur "Remplacer tout"

Entrez la description de l'image ici

Remarques:

  • Le vous précède suppose la modification d' un fichier texte avec de Windows EOL, \r\n.

  • Si vous utilisez des fichiers avec des fichiers EOL différents, vous pouvez les convertir en fichiers EOL Windows à l'aide du menu "Edition"> "Conversion EOL".

  • Si vous ne travaillez pas avec Windows EOL et que vous ne souhaitez pas les convertir, utilisez plutôt les éléments suivants:

    • Utiliser \nau lieu de \r\npour les EOL Unix / OS X ("Rechercher" \n, "Remplacer par" 1\n)

    • Utiliser \rau lieu de \r\npour Mac OS (jusqu'à la version 9) EOL ("Rechercher" \r, "Remplacer par" 1\r)


Lectures complémentaires

DavidPostill
la source
Cela ne fonctionne que si le séparateur de ligne est Windows, \ r \ n.
Zaheylu
4
Oui, mais Notepad ++ est un programme Windows ...;)
DavidPostill
5
Oh, tu as raison ... :) Pourtant, le fichier texte pourrait avoir un autre codage de fin de ligne;)
Zaheylu
5
Si vous ne travaillez pas avec Windows EOL, il n'y a aucune raison de les "convertir" ... utilisez-les \nou utilisez -les \r(EOLs Unix et Mac, respectivement). \n=> 1\nou \r=> 1\r. Je fais ce genre de choses plus souvent avec Extended au lieu de Regex personnellement.
WernerCD
2
@WernerCD Il convient de noter qu'un \rseul s'applique uniquement au Mac OS obsolète . Pas OS X, qui utilise \n.
Bob
19

Une autre option est la fonction d'enregistrement et de lecture.

  1. Avec votre curseur sur la première ligne, cliquez sur 'Démarrer l'enregistrement'
  2. Tapez End, 1,
  3. Cliquez sur 'Arrêter l'enregistrement'
  4. Cliquez sur 'Exécuter une macro plusieurs fois ...'
  5. Sélectionnez 'Exécuter jusqu'à la fin du fichier' et cliquez sur Exécuter.
  6. Travail accompli

Captures d'écran

enregistrement et lecture

Tapez End, 1,

Cliquez sur arrêter

Exécuter la macro

entrez la description de l'image ici

Terminé

Denham Coote
la source
9
Les macros Notepad ++ ne reçoivent jamais assez d'amour.
Armani
15

Réponse mise à jour:

Appuyez sur Ctrl+ Hpour ouvrir la boîte de dialogue Remplacer.

En mode de recherche, cochez Expression régulière.

Find what: $

Replace with: 1

Et frappé Replace all


Réponse originale

Appuyez sur Ctrl+ Hpour ouvrir la boîte de dialogue Remplacer.

En mode de recherche, cochez Regular Expression.

Trouver quoi: ^.*$

Remplacer par ($0)1

Et frappé Replace all

Explication

Vous recherchez l'expression régulière ^.*$, qui correspond essentiellement à chaque ligne. ^marque le début d'une ligne, .*inclut n'importe quel caractère un nombre quelconque de fois et $marque la fin de la ligne. Ainsi, cette expression régulière trouve tout le contenu sur chaque ligne.

Nous remplaçons cette expression par ($0)1, $0étant l'expression trouvée, et en lui ajoutant un 1.

Zaheylu
la source
2
Trouver = $et remplacer = 1est suffisant.
Salman Un
8

Ou le faire comme le font les grands garçons :).

Sélectionnez la dernière colonne à l'aide de Maj + Alt => touche droite (une fois) => touche bas (appuyez jusqu'à la dernière ligne).

Tapez ce que vous voulez. Il apparaîtra sur toutes les lignes à la fois.

banavalikar
la source
J'allais le dire aussi .. pourquoi toute cette expression complexe? cela répond parfaitement à la question .. et pourquoi le vote à la baisse? parce que quelqu'un n'a tout simplement pas compris que c'était une réponse valable? Oo
Idem
2
Cela peut ne pas être pratique pour 23 000 lignes (trop lent ou non (problèmes de mémoire dus aux algorithmes de Shlemiel le peintre ?)). Avez-vous réellement essayé sur 23 000 lignes?
Peter Mortensen
2
@PeterMortensen Horriblement lent, mais l'utilisation de la mémoire est correcte (5 Mo => 25 Mo). Le plus gros problème est qu'il ne semble pas bien gérer les longueurs de lignes différentes.
Bob
@Ditto Je ne prétends pas être un utilisateur moyen, mais cela semble beaucoup moins intuitif que les expressions régulières. Encore une fois, xkcd.com/1171
David Z
1
Ce n’est pas une très bonne réponse, vous devez d’abord trouver la plus longue ligne, puis vous devez appuyer jusqu’à la dernière ligne. Lors du test de cette méthode, je me suis ennuyé au bout de quelques dizaines de lignes, je ne pouvais pas rester là pendant 20k + lignes
Aequitas
1

S'il s'agit également de longues chaînes, vous pouvez alors maintenir Alt, cliquer et faire glisser pour bloquer la sélection et pouvoir écrire sur plusieurs lignes en même temps. S'ils ne sont pas également longs, mais pas séparés par des espaces, vous ne pouvez pas suivre la même procédure, puis remplacer "" par "".

Viktor Mellgren
la source
3
J'utilise parfois cette fonctionnalité, mais en traînant pour 23 000 lignes ... Pas tellement amusant :)
Denham Coote
1

Mode étendu.

Je voulais ajouter une approche légèrement différente qui n’est pas mentionnée dans d’autres réponses: le mode étendu.

Pour quelque chose comme ça - où tout vous êtes concernés par sont \r, \n, \tou d' autres inclus dans cette petite liste (bien que les regards de la page pour être « daté », donc pas sûr à 100% de sa véracité) il n'y a aucune raison d'aller à plein régime régulier expression.

J'utilise le mode étendu de Notepad ++ "souvent" pour masser les dispositions de fichiers - principalement en supprimant plusieurs lignes vides, des espaces supplémentaires et d'autres curiosités.

Élargi

  1. Menu "Rechercher"> "Remplacer" (ou Ctrl+ H)
  2. Déterminez les fins de ligne que vous voulez
  3. Dans "Trouver quoi", mettez:
    • \r\n Pour les fenêtres
    • \r pour les anciennes versions de MacOS (9 ou plus ancien)
    • \n pour Unix ou plus récent de MacOS (OS X ou plus récent)
  4. Définissez "Remplacer par" sur
    • 1\r\n Pour les fenêtres
    • 1\r pour les anciennes versions de MacOS (9 ou plus ancien)
    • 1\n pour Unix ou plus récent de MacOS (OS X ou plus récent)
  5. Activer "étendu"
  6. Cliquez sur "Remplacer tout"
WernerCD
la source
"Expression régulière" est un sur-ensemble de "étendu", de sorte que dans ce cas particulier, peu importe celle que vous utilisez.
DavidPostill
Cela ne devrait-il pas être \npour Unix et \rpour les anciennes versions de MacOS? Première puce de Wikipedia: en.wikipedia.org/wiki/Newline#Representations
nhahtdh