Geteilte Zeilen mit einem bestimmten Zeichen am Zeilenende verbinden

Geteilte Zeilen mit einem bestimmten Zeichen am Zeilenende verbinden

Ich muss zwei Zeilen verbinden. Eine davon hat einen Punkt am Ende der vorherigen im gesamten Textbeispiel:

line1:hello
line2:goodbye.

Ich muss es wie folgt ändern:

line1: hello goodbye.

Ich muss jede 3. Zeile (Vielfache von 3, also 3, 6, 9, 12, 15, 18, 21, ... Zeilen) dieses riesigen Textes entfernen.

Das ist, was ich tun möchte.

Erste Aufgabe:

  • jede Zeile prüfen

  • wenn es mit einem Punkt endet, .gehe zur nächsten Zeile,

  • Wenn es nicht mit einem Punkt endet, .fügen Sie die nächste Zeile an die aktuelle Zeile an.

Nicht jede Zeile hat eine Zeilennummer, sie beginnen mit normalen Wörtern.

Zweite Aufgabe

  • von Anfang an ist jede 3. Zeile Müll und sollte entfernt werden

  • Die erste Aufgabe muss auch erledigt werden, da der dritte Satz an einigen Stellen in zwei Zeilen unterteilt ist. Daher muss ich zuerst die in zwei Zeilen unterteilte Zeile vollständig zusammenfügen und dann die zweite Aufgabe ausführen.

Ich benutze Windows 7. Ich kann Notepad++ und Ultraedit verwenden

Antwort1

Erste AufgabeIch würde es in Notepad++ machen und dabei die Suchen-und-Ersetzen-Funktion mit regulären Ausdrücken verwenden:

  • Öffnen Sie „Suchen“ > „Ersetzen…“
  • Geben Sie als „Suchen nach:“ "([^\.])\r\n"(ohne Anführungszeichen) ein:
    • Bedeutung des regulären Ausdrucks: Suche nach einer Zeile, die mit etwas anderem als einem „.“ endet.
    • Hinweis: Wenn das Dokument Linux-Dateiendungen hat, müssen Sie nur „\n“ statt „\r\n“ verwenden.
  • Als „Ersetzen durch:“ geben Sie ein "\1 "(ohne Anführungszeichen; achten Sie darauf, auch das Leerzeichen nach „\1“ zu kopieren)
  • Wählen Sie als „Suchmodus“ „Regulärer Ausdruck“
  • Klicken Sie auf „Alle ersetzen“

Eingang:

hello
goodbye.
hello
hello
goodbye.
hello.
goodbye.

Ausgabe:

hello goodbye.
hello hello goodbye.
hello.
goodbye.

Derzweite Aufgabekann mit einem noch längeren regulären Ausdruck durchgeführt werden:

  • Öffnen Sie „Suchen“ > „Ersetzen…“
  • Geben Sie als „Suchen nach:“ "(([^\r\n]*\r\n){2})[^\r\n]*\r\n"(ohne Anführungszeichen) ein:
    • Bedeutung des regulären Ausdrucks: Finden Sie einen Block aus drei Zeilen.
    • Hinweis: Auch hier gilt: Wenn das Dokument Linux-Dateiendungen hat, müssen Sie nur „\n“ statt „\r\n“ verwenden.
  • Geben Sie als „Ersetzen durch:“ "\1"(ohne Anführungszeichen) ein:
  • Wählen Sie als „Suchmodus“ „Regulärer Ausdruck“
  • Klicken Sie auf „Alle ersetzen“

Eingang:

hello goodbye.
hello hello goodbye.
sdlfj sdgf.
hello.
goodbye.
(/%&/$&=)?)=´?&%.
goodbye goodbye.
bye.
sldfjsdökl.
hello.

Ausgabe:

hello goodbye.
hello hello goodbye.
hello.
goodbye.
goodbye goodbye.
bye.
hello.

Notiz: In beiden Beispielen bin ich davon ausgegangen, dass am Ende keine Leerzeichen stehen. Wenn doch, müssen Sie diese zuerst entfernen, zum Beispiel durch Regex-Ersetzen (wie oben) "\s*$"durch ""(ohne Anführungszeichen).

verwandte Informationen