Finden Sie CRLF in Notepad ++


316

Wie kann ich alle CR / LF-Zeichen in Notepad ++ finden / ersetzen?

Ich suche etwas, das dem Sonderzeichen ^ p in Microsoft Word entspricht.


Nur um ein wenig auf dem aufzubauen, was 'thenonhacker' erwähnte. Wir verwenden ULtraEdit-32 für den Job und müssen bei der Arbeit mit EDI-Dateien (x.12) häufig Daten umbrechen oder entpacken. Die 2 häufigsten Such- und Ersetzungszeichenfolgen sind "^ p" & "~". Wenn Sie in eine Richtung gehen, wird das "~" durch ein CR / LF ersetzt, um das Lesen jedes Segments zu erleichtern. Wenn Sie in die andere Richtung gehen, wird die Datei wieder in das Format gebracht, das der EDI-Übersetzer benötigt. Für faule Leute wie mich habe ich nur diese Map-to-Keys zur einfachen Verwendung.
DavidGrove

1
Obwohl nicht verwandt, aber hilfreich. Ich habe diese Seite besucht, nachdem ich nach einer Methode zum Konvertieren der UNIX-Textdatei in das Windows-Format in Windows gesucht hatte. Dies ist, was ich getan und gearbeitet habe, CTRL+Hwählen Sie "Suchmodus: Regulärer Ausdruck". "Find What: $" und "Ersetzen durch: \ r". Kopieren Sie den Inhalt, fügen Sie ihn in den Editor ein oder speichern Sie ihn auf einer Disc.
Guru

2
Yay! Notepad ++ 6.0 bietet die Unterstützung von PCRE: Regex wie [\r\n]+jetzt. Ich habe meine Antwort aktualisiert und werde feiern!
VonC

@VonC: Ich denke, ich muss auch alle meine [Notepad ++] Antworten aktualisieren :)
BoltClock

Antworten:


412

[\r\n]+ sollte auch funktionieren

Update 26. März 2012, Veröffentlichungsdatum von Notepad ++ 6.0 :

OMG, es funktioniert jetzt tatsächlich !!!

PCRE-Regexp in Notepad ++


Ursprüngliche Antwort 2008 (Notepad ++ 4.x) - 2009-2010-2011 (Notepad ++ 5.x)

Eigentlich nein, es scheint nicht mit Regexp zu funktionieren ...

Wenn Sie jedoch über Notepad ++ 5.x verfügen, können Sie den erweiterten Suchmodus verwenden und nach suchen \r\n. Das findet alles deine CRLF.

(Mir ist klar, dass dies die gleiche Antwort ist wie die anderen, aber auch hier ist der erweiterte Modus nur mit Notepad ++ 4.9, 5.x und mehr verfügbar.)


Seit April 2009 gibt es auf der Notepad ++ - Website einen Wiki-Artikel zu diesem Thema:
" So ersetzen Sie Linienenden und ändern so das Linienlayout ".
(von georgiecasey in seiner Antwort unten erwähnt )

Einige relevante Auszüge enthalten die folgenden Suchvorgänge:

Einfache Suche ( Ctrl+ F), Suchmodus =Normal

Sie können EOLim Bearbeitungsfenster eine auswählen .

  • Bewegen Sie den Cursor einfach an das Ende der Zeile und geben Sie Shift+ RightPfeil ein.
  • oder, um EOLmit der Maus auszuwählen , beginnen Sie direkt am Zeilenende und ziehen Sie an den Anfang der nächsten Zeile; Ziehen nach rechts von EOLfunktioniert nicht. Sie können das manuell kopieren EOLund in das Feld für Unix-Dateien LFeinfügen ( -only).

Einfache Suche (Strg + F), Suchmodus = Erweitert

Die Option "Erweitert" zeigt \nund \rals Zeichen an, die übereinstimmen könnten.
Wie im normalen Suchmodus sucht Notepad ++ nach dem genauen Zeichen.
Wenn Sie \rin einer Datei im UNIX-Format suchen, wird nichts gefunden, aber nach \nWillen gesucht . Ebenso enthält eine Datei im Macintosh-Format, \rjedoch nicht \n.

Einfache Suche (Strg + F), Suchmodus = Regulärer Ausdruck

Reguläre Ausdrücke verwenden die Zeichen ^und $, um die Übereinstimmungszeichenfolge am Anfang oder Ende der Zeile zu verankern. Wenn Sie beispielsweise nach suchen, return;$werden Vorkommen von "return" gefunden. die ohne nachfolgenden Text in derselben Zeile auftreten. Die Ankerzeichen funktionieren in allen Dateiformaten identisch.
Das '.' Das Punkt-Metazeichen stimmt nicht mit den Zeilenenden überein.

[Getestet in Notepad ++ 5.8.5]: Eine Suche nach regulären Ausdrücken mit einem expliziten \roder \nfunktioniert nicht (im Gegensatz zur Scintilla-Dokumentation ) .
Weder eine Suche nach einem expliziten (eingefügten) LF noch nach den (unsichtbaren) EOL-Zeichen, die bei Auswahl eines EOL in das Feld eingefügt werden. Erweiterte Suche ( Ctrl+ R) ohne regulären Ausdruck

Ctrl+ Mfügt etwas ein, das mit Zeilenumbrüchen übereinstimmt. Sie werden durch die Ersetzungszeichenfolge ersetzt.
Ich empfehle diese Methode als die zuverlässigste, es sei denn, Sie müssen wirklich Regex verwenden.
Um beispielsweise jede zweite neue Zeile in einer Datei mit doppeltem Abstand zu entfernen, geben Sie Ctrl+ Mzweimal in das Suchzeichenfolgenfeld und einmal in das Ersetzungszeichenfolgenfeld ein.

Erweiterte Suche ( Ctrl+ R) mit Regexp.

Weder Ctrl+ M, $noch \r\naufeinander abgestimmt sind.


Das gleiche Wiki erwähnt auch die Hex-Editor-Alternative :

  • Geben Sie die neue Zeichenfolge am Anfang des Dokuments ein.
  • Wählen Sie dann, um das Dokument im Hex-Modus anzuzeigen .
  • Wählen Sie eine der neuen Zeilen aus und drücken Sie Ctrl+ H.
  • Während Sie das Dialogfeld Ersetzen geöffnet haben, wählen Sie im Hintergrund die neue Ersetzungszeichenfolge aus und Ctrl+ Ckopieren Sie sie, um sie in die Texteingabe Ersetzen einzufügen.
  • Dann Ersetzen oder Ersetzen Sie alle, wie Sie möchten.

Hinweis: Das für eine neue Zeile ausgewählte Zeichen wird normalerweise als angezeigt 0a.
Es kann einen anderen Wert haben, wenn die Datei im Windows-Format vorliegt. In diesem Fall können Sie jederzeit zu gehen Edit -> EOL Conversion -> Convert to Unix Formatund nach dem Austausch wieder zurückschalten und Edit -> EOL Conversion -> Convert to Windows Format.


1
Ich habe Version 4.7 ausgeführt. Das Upgrade auf die neueste Version und den erweiterten Modus funktioniert wie angekündigt. Vielen Dank an alle, die geantwortet haben.
Polara

+1: Ich habe 4.6 ausgeführt und hatte ein ähnliches Problem. Und dank Ihrer Antwort habe ich ein Upgrade auf 5+ durchgeführt. Vielen Dank!
Paercebal

Es klappt! Aber das bringt Notepad ++ RegExp zum Kotzen. UltraEdit-32 ist schlauer, Sie brauchen nur \ n und Sie haben Ihren Job beendet ...
thenonhacker

\ r \ n hat für mich funktioniert, aber nicht \ n, was kontraintuitiv ist, wenn Sie ein Entwickler sind, der es gewohnt ist, \ n für \ r \ n zu verwenden.
Warren P

2
@ GarretWilson Ich bestätige, dass es einwandfrei [^\r]\nfunktioniert (Regex-Suche): i.stack.imgur.com/PxZWD.png
VonC

22

Es scheint, dass dies eine FAQ ist und die angebotene Lösung lautet:

Einfache Suche (Strg + H) ohne regulären Ausdruck

Sie können Ansicht / Zeilenende anzeigen oder Alle anzeigen / anzeigen aktivieren und die jetzt sichtbaren Zeilenumbruchzeichen auswählen. Wenn Sie dann den Befehl starten, werden einige Zeichen, die mit dem Zeilenumbruchzeichen übereinstimmen, in das Suchfeld eingefügt. Übereinstimmungen werden im Gegensatz zum Regex-Modus durch die Ersetzungszeichenfolge ersetzt.

Hinweis 1: Wenn Sie sie mit der Maus auswählen, beginnen Sie direkt vor ihnen und ziehen Sie sie an den Anfang der nächsten Zeile. Das Ziehen an das Zeilenende funktioniert nicht.

Hinweis 2: Sie können sie nicht selbst kopieren und in das Feld einfügen.

Erweiterte Suche (Strg + R) ohne regulären Ausdruck

Strg + M fügt etwas ein, das mit Zeilenumbrüchen übereinstimmt. Sie werden durch die Ersetzungszeichenfolge ersetzt.


2
Mit Strg + M können Sie auch Zeilenumbrüche in die Ersetzungszeichenfolge einfügen.
Dusty Campbell

2
Es ist eine FAQ, weil dies eine Art Designwarze in einem ansonsten brillanten Produkt ist.
Warren P

11

Im Dialogfeld Ersetzen möchten Sie den Suchmodus auf "Erweitert" setzen. Der Modus für normale oder reguläre Ausdrücke funktioniert nicht.

Suchen Sie dann einfach "\ r \ n" (oder nur \ n für Unix-Dateien oder nur \ r für Dateien im Mac-Format) und setzen Sie das Ersetzen auf das gewünschte Maß.


Diese Antwort war veraltet, als sie geschrieben wurde - Mac verwendet sie \rseit 2001 nicht mehr ... (es ist jetzt Unix)
Jasper

9

Ich hatte nicht viel Glück mit \ r \ n regulären Ausdrücken aus dem Such- / Ersetzungsfenster.

Dies funktioniert jedoch in Notepad ++ v4.1.2:

  1. Verwenden Sie das Menü "Ansicht | Zeilenende anzeigen", um die Anzeige von Zeilenendezeichen zu aktivieren. (Zeilenvorschübe für Wagenrücklauf sollten als einzelnes schattiertes CRLF-Zeichen angezeigt werden.)

  2. Wählen Sie eines der CRLF-Zeichen aus (stellen Sie den Cursor direkt vor eines, halten Sie die UMSCHALTTASTE gedrückt und drücken Sie dann einmal die RECHTE CURSOR-Taste).

  3. Kopieren Sie das CRLF-Zeichen in die Zwischenablage.

  4. Stellen Sie sicher , dass Sie nicht den Fund oder Suchen / Ersetzen - Dialog geöffnet.

  5. Öffnen Sie den Dialog zum Suchen / Ersetzen. Das Feld 'Find what' zeigt den Inhalt der Zwischenablage an: in diesem Fall das CRLF-Zeichen - das als 2 'Box-Zeichen' angezeigt wird (vermutlich ist es ein nicht druckbares Zeichen?)

  6. Stellen Sie sicher, dass die Option "Regulärer Ausdruck" deaktiviert ist.

Jetzt sollten Sie in der Lage sein, nach Bedarf zu zählen, zu finden oder zu ersetzen.



4

Ich habe festgestellt, dass es funktioniert, indem ich die Funktion Ersetzen und "\ n" im Modus "Erweitert" verwende. Ich verwende Version 5.8.5.


1
Eines der wenigen Elemente auf dieser Seite, das funktioniert. Verwenden von notepadd ++ 5.8.6. Es ist wirklich schwer zu glauben, dass etwas so Einfaches die Menge an übermäßig komplexen und oft nicht funktionierenden Antworten erfordern sollte, die in diesem Thread gegeben wurden.
Andrew S

4

Verwenden Sie 2013, Version 6.13 oder höher:

Menü BearbeitenEOL-KonvertierungWindows-Format .


Dies gilt nicht für den allgemeinen Fall, dass CRLF durch ein oder mehrere beliebige Zeichen ersetzt wird. Oder Sie ersetzen ein oder mehrere beliebige Zeichen durch CRLF (z. B. Leerzeichen durch CRLF ersetzen).
Peter Mortensen

2

Angenommen, es wird nach "regulären Ausdrücken" gesucht, suchen Sie nach \ r \ n. Ich bevorzuge \ r? \ N, da einige Dateien keine Zeilenumbrüche verwenden.

EDIT: Danke für das Feedback, wer auch immer dies abgelehnt hat. Ich habe das gelernt ... nun, nichts, weil Sie kein Feedback gegeben haben. Warum ist das falsch?


1
Ich bin mir nicht sicher, warum es nicht funktioniert, aber es funktioniert nicht. Ich gehe davon aus, dass diese Regex-Implementierung (in Notepad ++) jeweils nur eine Zeile überprüft und alle neuen Zeilenzeichen ignoriert. Das ist wahrscheinlich der Grund, warum Sie abgewählt wurden.
Frank Hadder

1
ja. Regex ist in Notepad ++ Zeile für Zeile, sodass Sie bei EOL mit $ positionell übereinstimmen können, jedoch keine Ausdrücke suchen / ersetzen können, die Zeilengrenzen überschreiten.
Warren P

2

Verwenden Sie die erweiterte Suchoption ( Ctrl+ R) und die Tastenkombination für CRLF ( Ctrl+ M), um einen Wagenrücklauf einzufügen.


Strg + R hat bei mir nicht funktioniert, als ich es ausprobiert habe. Es wurde ein seltsames Steuerzeichen in das Dokument " DC2" eingefügt . Notepad ++ Version: 7.5.6 (2018-05-19).
Peter Mortensen

2

Wenn Sie einen komplexen regulären Ausdruck ersetzen müssen, einschließlich \ r \ n, können Sie die Einschränkung durch einen dreistufigen Ansatz umgehen:

  1. Ersetzen Sie alle \r\ndurch ein Tag, sagen wir #GO#→ Aktivieren Sie 'Erweitert', ersetzen Sie \r\ndurch#GO#
  2. Führen Sie Ihren regulären Ausdruck durch, z. B. Entfernen von mehrzeiligen Zeichen ICON="*"aus einem HTML-Lesezeichen → Überprüfen Sie den regulären Ausdruck und ersetzen Sie ihnICON=.[^"]+.> by >
  3. Zurücksetzen \ r \ n → Aktivieren Sie 'Erweitert' und ersetzen Sie #GO#durch\r\n

2

Gehen Sie zu Ansicht -> Symbol anzeigen -> Alle Zeichen anzeigen // Es hat bei mir funktioniert


1

Nehmen Sie diese Einstellung vor. Menü-> Ansicht-> Symbol anzeigen-> Deaktivieren Sie Zeilenende anzeigen


1
Dies beantwortet nicht die ursprüngliche Frage. Bitte erläutern Sie, warum dies Ihrer Meinung nach ein nützlicher Beitrag zu diesen Fragen und Antworten ist. Bitte lesen Sie auch die Hilfe - Seiten , wie nützliche Antworten zu machen.
AdrianHHH

1

Ich habe die Datei in Notepad ++ geöffnet und in wenigen Schritten ersetzt:

  1. Ersetzen Sie alle "\ r \ n" durch "\ r \ n"
  2. Ersetzen Sie alle "; \ r \ n" durch "\ r \ n"
  3. Ersetzen Sie alle "\ r \ n" durch ""

Dadurch werden alle Unterbrechungen dort platziert, wo sie sein sollten, und diejenigen, die die Datei auflösen, werden entfernt.

Es hat bei mir funktioniert.


1

In NP v6.9 war ich dazu überhaupt nicht in der Lage. Ich fand es einfach genug in Msoft Word (2K).

Öffnen Sie das Dokument und gehen Sie zu Bearbeiten-> Ersetzen.

Klicken Sie dann unten im Suchfeld auf "Mehr" und suchen Sie dann die Schaltfläche "Spezial". Sie haben verschiedene Dinge für Sie. Für den Dos-Stil habe ich den "Absatz" verwendet. Dies ist ein Cr lf-Paar in Windows Land.


0

Führen Sie einfach ein \ r mit einem Suchen aus und ersetzen Sie es durch ein Leerzeichen im Ersetzungsfeld, damit alles bis zu einer Zeile reicht. Führen Sie dann eine Suche durch und ersetzen Sie sie (in meinem Fall durch ein Semikolon) und ersetzen Sie sie durch; \ n

:) -T & C.


1
Dies unterscheidet sich von den vorhandenen Antworten wie?
Alle Arbeiter sind wesentlich

0

So ändern Sie ein Dokument mit separaten Zeilen in eine einzelne Zeile, wobei jede Zeile einen Eintrag in einer durch Kommas getrennten Liste bildet:

  1. ctrl+ f, um die Suche / den Ersatz zu öffnen.
  2. Klicken Sie auf die Registerkarte "Ersetzen".
  3. Füllen Sie den Eintrag "Find what" mit " \r\n".
  4. Füllen Sie den Eintrag "Ersetzen durch" mit " ," oder " ," (je nach Präferenz).
  5. Deaktivieren Sie das Kontrollkästchen "Ganzes Wort abgleichen" (das wichtige Bit, das sich der Logik entzieht).
  6. Aktivieren Sie das Optionsfeld "Erweitert".
  7. Klicken Sie auf die Schaltfläche "Alle ersetzen".

Diese Schritte drehen sich zB

Foo Bar

Bar Baz

baz foo

in:

Foo Bar, Bar Baz, Baz Foo

oder: (je nach Präferenz)

Foo Bar, Bar Baz, Baz Foo


0

Vielleicht können Sie TextFX-Plugins verwenden

Gehen Sie in TextFX zu textfx bearbeiten → leere Zeilen löschen


0

Verwenden Sie das folgende Regex-Konstrukt, um eine Zeilenumbruchsequenz zu finden :

\R

Zu finden und auszuwählen aufeinanderfolgende Zeilenumbruch Sequenzen, fügen Sie +nach \R: \R+.

Stellen Sie sicher, dass Sie den Modus für reguläre Ausdrücke aktivieren:

Geben Sie hier die Bildbeschreibung ein

Es passt:

  • U+000DU+000A -CRLF` Sequenz
  • U+000A- LINE FEED, LF
  • U+000B- LINE TABULATION, VT
  • U+000C- FORM FEED, FF
  • U+000D- CARRIAGE RETURN, CR
  • U+0085- NEXT LINE, NEL
  • U+2028 - - LINE SEPARATOR
  • U+2029 - - PARAGRAPH SEPARATOR
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.