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"
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).
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.
Klicken Sie mit dem Cursor in der ersten Zeile auf "Aufnahme starten".
Typ End, 1,↓
Klicken Sie auf "Aufzeichnung beenden".
Klicken Sie auf "Makro mehrmals ausführen".
Wählen Sie "Bis zum Ende der Datei ausführen" und klicken Sie auf "Ausführen"
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 .
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.
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.
:%s/$/1/
. Oh warte, das ist Vim . ;-) (Was auch für Windows verfügbar ist .):g/$/norm A1
. Oder die komplexer, aber schickergg$<C-v>G$A1<esc>
. Oder sogar die zugegebenermaßen widerwärtigenggqqqqqA1<esc>j@qq@q
. Mehr als eine Möglichkeit: PAntworten:
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"
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
\n
anstelle von\r\n
für Unix / OS X EOLs ("Suchen nach"\n
, "Ersetzen durch"1\n
).Verwenden Sie
\r
anstelle von\r\n
für Mac OS (bis Version 9) EOLs ("Suchen nach"\r
, "Ersetzen durch"1\r
).Weitere Lektüre
quelle
\n
oder\r
stattdessen (Unix- bzw. Mac-EOLs).\n
=>1\n
oder\r
=>1\r
. Ich mache das öfter mit Extended als mit Regex.\r
nur für das ausgefallene Mac OS gilt. Nicht OS X, das verwendet\n
.Eine weitere Option ist die Aufnahme- und Wiedergabefunktion.
Screenshots
Typ End, 1,↓
quelle
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:
1Und 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
,$0
indem wir der gefundene Ausdruck sind und ein1
an ihn anhängen .quelle
$
und Ersetzen =1
ist ausreichend.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.
quelle
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.
quelle
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
,\t
oder 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.
\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)1\r\n
für Windows1\r
für ältere Versionen von MacOS (9 oder älter)1\n
für Unix oder neuer von MacOS (OS X oder neuer)quelle
\n
für Unix und\r
für ältere Versionen von MacOS sein? Erster