Fügen Sie in Notepad++ am Anfang jeder zweiten Zeile Text hinzu

Fügen Sie in Notepad++ am Anfang jeder zweiten Zeile Text hinzu

Ich möchte Folgendes tun:

  • <title>Am Anfang der Zeilen 1, 3, 5 usw. hinzufügen (Hunderte von Zeilen in einer Notepad++-Datei).
  • </title>Am Ende der Zeilen 1, 3, 5 usw. hinzufügen .

Dann:

  • <link>Am Anfang von Zeilen mit geraden Zahlen hinzufügen (z. B. Zeilen 2, 4, 6, 8 usw.).
  • </link>Am Ende von Zeilen mit geraden Zahlen hinzufügen (z. B. Zeilen 2, 4, 6, 8 usw.).

Antwort1

Ich persönlich denke, dass es viel einfacher wäre, dies durch das Schreiben eines einfachen Perl/Python-Skripts zu erreichen, aber hier ist eine Möglichkeit, wie Sie es in Notepad++ tun können. Ich habe es mit einigen Beispieldaten versucht und es hat wie gewünscht funktioniert.

  • Öffnen Sie die Datei, die Sie bearbeiten möchten
  • Gehe zum Anfang der ersten Zeile in der Datei
  • Klicken Sie im Menü auf die Option Makro --> Aufnahme starten
  • (Titel) einfügen, Ende-Taste drücken, um zum Zeilenende zu gelangen, (/Titel) einfügen
  • Home-Taste drücken zum Zeilenanfang gehen
  • Drücken Sie die Abwärtstaste, um zu Zeile 2 zu gelangen
  • Einfügen (Link), Ende-Taste drücken, um zum Zeilenende zu gelangen, einfügen (/Link)
  • Home-Taste drücken zum Zeilenanfang gehen
  • Drücken Sie die Abwärtstaste, um zu Zeile 3 zu gelangen
  • Klicken Sie im Menü auf die Option Makro --> Aufzeichnung beenden

Jetzt können Sie das Makro beliebig oft erneut abspielen und die Aktionen werden wiederholt/ausgeführt.

Antwort2

Vielleicht können Sie dies anders angehen als mit „alternativen Zeilen“ (was mit einer Skriptsprache wirklich am besten gelöst wäre).

Angenommen, die Zeilen, die Sie mit „Link“ umschließen möchten, enthalten etwas, das sie als Link identifiziert, könnten Sie diese Zeilen zuerst ersetzen und dann davon ausgehen, dass alle verbleibenden Zeilen Titel sein müssen. Nehmen wir also an, Ihre Linkzeilen enthalten „http“:

  1. Control-Hum den Ersetzungsdialog aufzurufen
  2. Geben Sie (http.*)als Suchkriterium ein (suchen Sie nach einer beliebigen Zeile, die httpdarin enthalten ist, und speichern Sie sie in der Variablen\1
  3. Geben Sie (link)\1(/link)als Ersetzungskriterium ein - ersetzen Sie das, was im vorherigen Schritt gefunden wurde, durch sich selbst, das in den Link-Tags enthalten ist
  4. Alles ersetzen – jetzt sind alle Ihre Linkzeilen eingeschlossen, alle verbleibenden Zeilen müssen Titel sein

  1. Geben Sie ^([^(\(link\))]*)$als Suchkriterium ein (suchen Sie nach Zeilen, die nicht enthalten(link)
  2. Geben Sie (title)\1(/title)als Ersetzungskriterium ein
  3. Alles ersetzen

Dadurch werden die restlichen Zeilen mit Titel-Tags umschlossen.

Antwort3

Bearbeiten:Diese Antwort wurde unter Verwendung von Notepad++ Version 5.9.8 geschrieben und getestet und funktioniert mit der aktuellen Version von Notepad++ (v 6.2) und den meisten früheren Versionen. Nachdem ich diese Antwort geschrieben hatte, habe ich Notepad++ auf die aktuelle Version 6.2 aktualisiert und festgestellt, dass die Lösung jetzt viel einfacher ist. Wenn Sie also Notepad++ Version 5.9.8 (oder frühere Versionen) verwenden und nicht auf die aktuelle Version von Notepad++ aktualisieren möchten, funktioniert diese Antwort für Sie. Wenn Sie auf Notepad++ Version 6 oder höher aktualisiert haben, lesen Sie meine andere Antwort, die viel einfacher ist.

Dies wird als Originaldatei verwendet:

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7

Schritt 1. Platzieren Sie am Anfang und Ende aller Zeilen ein Unique-Tag mit " <title>" und " ":</title>

In "Regular Expression" Mode (F: is Find expression, R: is Replace expression):  
    F:^(.*)$
    R:<##@@Begin@@##><title>\1</title><##@@End@@##>

Ergibt sich daraus:

<##@@Begin@@##><title>This is line 1</title><##@@End@@##>
<##@@Begin@@##><title>This is line 2</title><##@@End@@##>
<##@@Begin@@##><title>This is line 3</title><##@@End@@##>
<##@@Begin@@##><title>This is line 4</title><##@@End@@##>
<##@@Begin@@##><title>This is line 5</title><##@@End@@##>
<##@@Begin@@##><title>This is line 6</title><##@@End@@##>
<##@@Begin@@##><title>This is line 7</title><##@@End@@##>

Schritt 2. Entfernen Sie alle „Newlines“ (\r\n):

In "Extended" mode:
    F:\r\n
    R:

Das Ergebnis ist folgendes (die gesamte Datei steht in einer einzigen Zeile):

<##@@Begin@@##><title>This is line 1</title><##@@End@@##><##@@Begin@@##><title>This is line 2</title><##@@End@@##><##@@Begin@@##><title>This is line 3</title><##@@End@@##><##@@Begin@@##><title>This is line 4</title><##@@End@@##><##@@Begin@@##><title>This is line 5</title><##@@End@@##><##@@Begin@@##><title>This is line 6</title><##@@End@@##><##@@Begin@@##><title>This is line 7</title><##@@End@@##>

Schritt 3. Ändern Sie in der zweiten Zeile jeder zweiten Zeile („gerade“ Zeilen) „ <title>“ und „ “ </title>in „ “ „ “:<link></link>

In "Regular Expression" Mode:
    F:<##@@Begin@@##>(<title>.*?</title><##@@End@@##>)<##@@Begin@@##><title>(.*?)</title>(<##@@End@@##>)
    R:\1<link>\2</link>\3

Das Ergebnis ist folgendes (die gesamte Datei steht weiterhin in einer einzigen Zeile):

<title>This is line 1</title><##@@End@@##><link>This is line 2</link><##@@End@@##><title>This is line 3</title><##@@End@@##><link>This is line 4</link><##@@End@@##><title>This is line 5</title><##@@End@@##><link>This is line 6</link><##@@End@@##><title>This is line 7</title><##@@End@@##>

Schritt 4. Ersetzen Sie das „End“-Tag durch einen „Newline“-Tag (\r\n):

In "Extended" mode:
    F:<##@@End@@##>
    R:\r\n

Ergibt sich daraus:

<title>This is line 1</title>
<link>This is line 2</link>
<title>This is line 3</title>
<link>This is line 4</link>
<title>This is line 5</title>
<link>This is line 6</link>
<title>This is line 7</title>

Also 4 Schritte. Nicht schlecht, wenn Sie dies nur einmal oder nur sehr gelegentlich tun müssen.

Die große Einschränkung bei Notepad++ besteht darin, dass Sie die Such-/Ersetzungsmethoden „Erweitert“ und „Regex“ nicht kombinieren können. Im Modus „Erweitert“ können Sie also nach „Zeilenumbrüchen“ suchen, aber nicht mit „Platzhaltern“ (*.?), und im Modus „Regex“ können Sie mit „Platzhaltern“ suchen, aber nicht nach „Zeilenumbrüchen“.

Wenn Sie dies regelmäßig tun müssen, wäre es viel einfacher, Textpad zu verwenden (http://textpad.com), können Sie dies in zwei Schritten tun (falls die Möglichkeit besteht, dass die Datei eine „ungerade“ Zeilenanzahl hat):

Schritt 1. Fügen Sie allen Zeilen " <title>" " " hinzu:</title>

In "Regular Expression" Mode (F: is Find expression, R: is Replace expression):  
    F:^(.*)$
    R:<title>\1</title>

Schritt 2. Ändern Sie in der zweiten Zeile jeder zweiten Zeile („gerade“ Zeilen) „ <title>“ und „ “ </title>in „ <link>“ und „ “:</link>

Still in "Regular Expression" Mode:  
    F:^(<title>.*</title>)\n<title>(.*)</title>
    R:\1\n<link>\2</link>

Wenn Sie mit Textpad wissen, dass die Datei immer eine „gerade“ Zeilenzahl hat, können Sie die ganze Sache auf einmal erledigen:

In "Regular Expression" Mode:  
    F:^(.*)\n(.*)\n
    R:<title>\1</title>\n<link>\2</link>\n

Sie können diesen Ersatz auch ganz einfach mit awk vornehmen.

Bearbeiten:hier sind einige Informationen und ein Beispiel zur Vorgehensweise mit awk ...

Awk ist eine Skript-Programmiersprache, die für Unix entwickelt wurde, jetzt aber für Windows und, glaube ich, auch für Mac verfügbar ist.

Der Haupteinsatzzweck von awk besteht in der Verarbeitung (Bearbeitung und Filterung) von Textausgaben und Textdateien. Beispielsweise kann eine „Protokolldatei“ verarbeitet werden, um bestimmte Felder und Zeilen auszudrucken.

Awk hat keine Benutzeroberfläche. Es ist ein Programm, das normalerweise über die Eingabeaufforderung eines Befehlsfensters oder als „Shell-Skript“ (Unix) bzw. „Batch-Datei“ (Windows) ausgeführt wird.

Sie teilen awk mit, was mit dem verarbeiteten Text geschehen soll, indem Sie beim Ausführen von awk in der Befehlszeile awk-Befehle angeben oder eine awk-Befehlsskriptdatei erstellen.

Unter Unix ist es sehr üblich, alle awk-Befehle in der Befehlszeile und nicht in einer awk-Skriptdatei anzugeben. Unter Windows ist es genau umgekehrt ... aufgrund der Art und Weise, wie awk in seinen Befehlen Anführungszeichen, Klammern und andere Satzzeichen verwendet, verwirren awk-Skripte im Allgemeinen (vielleicht immer) die Windows-Eingabeaufforderung. Unter Windows ist es daher fast immer besser, awk zu verwenden, indem man die awk-Befehle in eine awk-Skriptdatei einfügt.

Hier ist ein Beispiel mit awk als Lösung für die Frage.

Nehmen wir zunächst an, der Text, den Sie bearbeiten möchten, befindet sich in einer Datei mit dem Namen:

example.txt

Erstellen Sie als Nächstes eine Datei mit dem folgenden Code. Sie können sie unter folgendem Namen speichern:
oddeven.awk (oder wie auch immer Sie möchten).

{
    if (NR % 2 == 1)
    {
        print "<title>"$0"</title>"
    }
    else
    {
        print "<link>"$0"</link>"
    }
}

Alternativ können Sie dieses awk-Skript in einer einzigen Zeile wie folgt angeben:

{ if (NR % 2 == 1) {print "<title>" $0 "</title>"} else {print "<link>" $0 "</link>"} }

Die von uns verwendeten awk-Befehlszeilenparameter sind:

-f "oddeven.awk"   This is the name of the awk command script file.
"example.txt"      This is the name of the text file you are reading (and manipulating).
"output.txt"       This is the name of the file you are creating that will contain the modified text.

Die Befehlszeile, die Sie zum Aufrufen von awk verwenden würden, sieht dann folgendermaßen aus:

awk -f "oddeven.awk" "example.txt" > "output.txt"

Wenn dieser Vorgang der Dateiänderung eine „einmalige“ Sache ist, ist die Verwendung von Notepad++ oder eines anderen Texteditors wahrscheinlich einfacher als das Erlernen einer Skriptsprache.

Wenn Sie diesen Vorgang jedoch immer wieder wiederholen möchten oder ihn automatisieren möchten, sodass er über ein Shell-Skript (Unix) oder eine Batchdatei (Windows) ausgeführt werden kann, ist awk die richtige Wahl.

Antwort4

Ich weiß, das ist keine eindeutige Antwort, aber es kann Sie in die richtige Richtung führen. Wenn Sie einen Blick aufDiese SeiteEs zeigt Ihnen, wie Sie die Ersetzungsfunktion im Regex-Modus verwenden, um Dinge am Anfang und Ende von Zeilen einzufügen.

Z. B. Suchen nach: ^(.+)$ Ersetzen durch: title\1/title

Dadurch wird zwar jede Zeile bearbeitet, aber das ist schon die halbe Miete.

verwandte Informationen