Wie füge ich eine Nummer am Ende jeder Zeile in Notepad ++ hinzu?

37

Ich habe 23.000 Zeilen und muss die Nummer 1am Ende jeder Zeile hinzufügen .

Wie kann ich das machen?

Jetzt sofort:

[line1]TEXT
[line2]TEXT

Was ich möchte:

[line1]TEXT1
[line2]TEXT1
falsch
quelle
2
Interessanter; Wie würden Sie sequentiellen Zeilen fortlaufende Nummern zuweisen? :-)
Carl Witthoft
1
@CarlWitthoft Nummerieren Sie die Zeilen mit dem TextFX-Paket (TextFx> TextFx-Tools> Zeilennummern einfügen) und verschieben Sie die Zeilennummern mit einem regulären Ausdruck in die EOL.
DavidPostill
2
Wenn zwischen zwei Textzeilen eine Leerzeile steht, sollte diese Zeile auch eine 1 erhalten?
Nzall
4
:%s/$/1/. Oh warte, das ist Vim . ;-) (Was auch für Windows verfügbar ist .)
DevSolar
1
@ DevSolar Alternativ :g/$/norm A1. Oder die komplexer, aber schicker gg$<C-v>G$A1<esc>. Oder sogar die zugegebenermaßen widerwärtigen ggqqqqqA1<esc>j@qq@q. Mehr als eine Möglichkeit: P
Türknauf

Antworten:

28

Wie füge ich eine Nummer am Ende jeder Zeile in Notepad ++ hinzu?

  • Menü "Suchen"> "Ersetzen" (oder Ctrl+ H)

  • Stellen Sie "Find what" auf \r\n

  • Setzen Sie "Ersetzen durch" auf 1\r\n

  • Aktivieren Sie "Regulärer Ausdruck" oder "Erweitert"

    Hinweis - "Regulärer Ausdruck" ist eine Obermenge von "Erweitert". In diesem speziellen Fall spielt es keine Rolle, welchen Ausdruck Sie verwenden.

  • Klicken Sie auf "Alle ersetzen"

Geben Sie hier eine Bildbeschreibung ein

Anmerkungen:

  • In diesem Beispiel wird davon ausgegangen, dass Sie eine Textdatei mit Windows-EOLs bearbeiten \r\n.

  • Wenn Sie Dateien mit unterschiedlichen EOLs verwenden, können Sie diese über das Menü "Bearbeiten"> "EOL-Konvertierung" in Windows-EOLs konvertieren.

  • Wenn Sie nicht mit Windows EOL arbeiten und diese nicht konvertieren möchten, verwenden Sie stattdessen Folgendes:

    • Verwenden Sie \nanstelle von \r\nfür Unix / OS X EOLs ("Suchen nach" \n, "Ersetzen durch" 1\n).

    • Verwenden Sie \ranstelle von \r\nfür Mac OS (bis Version 9) EOLs ("Suchen nach" \r, "Ersetzen durch" 1\r).


Weitere Lektüre

DavidPostill
quelle
Dies funktioniert nur, wenn der Zeilenbegrenzer Windows ist, \ r \ n.
Zaheylu
4
Ja, aber Notepad ++ ist ein Windows-Programm ...;)
DavidPostill
5
Oh, du hast recht ... :) Trotzdem könnte die Textdatei eine andere Zeilenendekodierung haben;)
Zaheylu
5
Wenn Sie nicht mit Windows EOL arbeiten, gibt es keinen Grund, sie zu "konvertieren" ... verwenden Sie einfach \noder \rstattdessen (Unix- bzw. Mac-EOLs). \n=> 1\noder \r=> 1\r. Ich mache das öfter mit Extended als mit Regex.
WernerCD
2
@WernerCD Zu beachten ist, dass eine Single \rnur für das ausgefallene Mac OS gilt. Nicht OS X, das verwendet \n.
Bob
19

Eine weitere Option ist die Aufnahme- und Wiedergabefunktion.

  1. Klicken Sie mit dem Cursor in der ersten Zeile auf "Aufnahme starten".
  2. Typ End, 1,
  3. Klicken Sie auf "Aufzeichnung beenden".
  4. Klicken Sie auf "Makro mehrmals ausführen".
  5. Wählen Sie "Bis zum Ende der Datei ausführen" und klicken Sie auf "Ausführen"
  6. Job erledigt

Screenshots

Aufnahme und Wiedergabe

Typ End, 1,

Klicken Sie auf Stop

Führen Sie Makro aus

Bildbeschreibung hier eingeben

Getan

Denham Coote
quelle
9
Notepad ++ - Makros werden nie genug geliebt.
Armani
15

Aktualisierte Antwort:

Drücken Sie Ctrl+, Hum das Dialogfeld Ersetzen zu öffnen.

Aktivieren Sie im Suchmodus die Option Regulärer Ausdruck.

Find what: $

Replace with: 1

Und getroffen Replace all


Ursprüngliche Antwort

Drücken Sie Ctrl+, Hum das Dialogfeld Ersetzen zu öffnen.

Aktivieren Sie im Suchmodus das Kontrollkästchen Regular Expression.

Finde was: ^.*$

Ersetzen mit ($0)1

Und getroffen Replace all

Erläuterung

Sie suchen nach dem regulären Ausdruck ^.*$, bei dem es sich im Wesentlichen um jede Zeile handelt. ^markiert den Anfang einer Zeile, .*enthält ein beliebiges Zeichen und $markiert das Ende der Zeile. Somit findet dieser reguläre Ausdruck den gesamten Inhalt in jeder Zeile.

Wir ersetzen diesen Ausdruck durch ($0)1, $0indem wir der gefundene Ausdruck sind und ein 1an ihn anhängen .

Zaheylu
quelle
2
Suchen = $und Ersetzen = 1ist ausreichend.
Salman A
8

Oder mach es wie die großen Jungs :).

Wählen Sie die letzte Spalte mit Umschalt + Alt => Rechte Taste (einmal) => Nach-unten-Taste (bis zur letzten Zeile drücken).

Geben Sie ein, was Sie wollen. Es wird in allen Zeilen gleichzeitig angezeigt.

banavalikar
quelle
Ich wollte das auch sagen. Warum all die komplexen Ausdrücke? das beantwortet die frage perfekt .. und warum stimmen die ab? weil jemand einfach nicht verstanden hat, dass es eine gültige Antwort ist? Oo
Ditto
2
Dies ist für 23.000 Zeilen möglicherweise nicht praktikabel (zu langsam oder auf andere Weise (Speicherprobleme aufgrund von Shlemiel, dem Algorithmus des Malers ?)). Hast du es tatsächlich auf 23.000 Leitungen ausprobiert?
Peter Mortensen
2
@PeterMortensen Schrecklich langsam, aber die Speichernutzung ist in Ordnung (5 MB => 25 MB). Das größere Problem ist, dass es nicht gut mit unterschiedlichen Leitungslängen fertig zu werden scheint.
Bob
@Dito Ich behaupte nicht, ein durchschnittlicher Benutzer zu sein, aber dies scheint wesentlich weniger intuitiv zu sein als reguläre Ausdrücke. Dann wieder xkcd.com/1171
David Z
1
Dies ist keine sehr gute Antwort. Zuerst müssten Sie die längste Zeile finden, dann müssten Sie bis zur letzten Zeile drücken. Beim Testen dieser Methode langweilte ich mich nach ein paar Dutzend Zeilen, für die ich nicht sitzen konnte 20k + Zeilen
Aequitas
1

Wenn es sich um gleich lange Zeichenfolgen handelt, können Sie die Maustaste Altgedrückt halten und ziehen, um die Auswahl zu blockieren und gleichzeitig in mehrere Zeilen zu schreiben. Wenn sie nicht gleich lang, aber nicht durch Leerzeichen getrennt sind, können Sie nicht dieselbe Prozedur ausführen und dann "" durch "" ersetzen.

Viktor Mellgren
quelle
3
Ich benutze manchmal diese Funktion, aber ziehen für 23.000 Zeilen ... Nicht so viel Spaß :)
Denham Coote
1

Erweiterter Modus.

Ich wollte einen etwas anderen Ansatz hinzufügen, der in anderen Antworten nicht erwähnt wird: Erweiterter Modus.

Für diese so etwas wie - wo alles , was Sie mit betroffen sind , sind \r, \n, \toder enthalten in andere diese kleine Liste (obwohl dieser Seite aussieht „datiert“ zu sein, also nicht 100% sicher auf seine Richtigkeit) es keinen Grund , regelmäßige zu gehen voll ist Ausdruck.

Ich verwende den erweiterten Modus von Notepad ++ "oft", um Dateilayouts zu massieren - hauptsächlich um das Entfernen mehrerer Leerzeilen, zusätzlichen Leerraums und anderer sortierter Merkwürdigkeiten.

Verlängert

  1. Menü "Suchen"> "Ersetzen" (oder Ctrl+ H)
  2. Bestimmen Sie, welche Zeilenenden Sie möchten
  3. In "Find What" setzen:
    • \r\n für Windows
    • \r für ältere Versionen von MacOS (9 oder älter)
    • \n für Unix oder neuer von MacOS (OS X oder neuer)
  4. Setzen Sie "Ersetzen durch" auf
    • 1\r\n für Windows
    • 1\r für ältere Versionen von MacOS (9 oder älter)
    • 1\n für Unix oder neuer von MacOS (OS X oder neuer)
  5. "Erweitert" aktivieren
  6. Klicken Sie auf "Alle ersetzen"
WernerCD
quelle
"Regulärer Ausdruck" ist eine Obermenge von "erweitert". In diesem speziellen Fall spielt es also keine Rolle, welchen Ausdruck Sie verwenden.
DavidPostill
Sollte es nicht \nfür Unix und \rfür ältere Versionen von MacOS sein? Erster
Punkt