Wie kann ich diese Aufgabe in Notepad ++ automatisieren?

0

Ich habe eine Textdatei mit über 200 Tabellennamen. Probe wie folgt

T_BCPCOMITEE_EA4
T_BCPEMERSIT_EA4
T_BCPROLE_EA4
T_BDR_AG_EA4
T_BDR_CRITERIA_EA4

Ich muss den Tabellennamen nehmen und eine select-Anweisung hinzufügen, die endgültige Ausgabe sollte wie htis aussehen

--T_BCPCOMITEE_EA4
select * from T_BCPCOMITEE_EA4;
--T_BCPEMERSIT_EA4
select * from T_BCPEMERSIT_EA4;
--T_BCPROLE_EA4
select * from T_BCPROLE_EA4;
--T_BDR_AG_EA4
select * from T_BDR_AG_EA4;
--T_BDR_CRITERIA_EA4
select * from T_BDR_CRITERIA_EA4;

Kann ich diese Aufgabe auf irgendeine Weise automatisieren? Bitte helfen Sie. TIA

RaMs_YearnsToLearn
quelle

Antworten:

2

Der einfachste Weg, dies zu tun, ist das Finden und Ersetzen von Regex.

Dies geschieht entweder durch Gehen zu Search Klicken Sie in der Symbolleiste auf und wählen Sie dann Replace...oder über die Tastenkombination STRG + H .

Stellen Sie sicher, dass Sie haben Regular expression Wählen Sie unten rechts und stellen Sie sicher, dass . matches newline ist deaktiviert (dies ist wichtig, damit der reguläre Ausdruck wie vorgesehen funktioniert).

ANMERKUNG: Bei dieser Regex-Lösung wird davon ausgegangen, dass jede Zeile einen separaten und vollständigen Tabellennamen hat (da in keine Tabellennamen auf mehrere Zeilen aufgeteilt sind und jede Zeile nur einen einzelnen Tabellennamen enthält).

Geben Sie Folgendes in das Feld "Suchen" ein:

^(.*)

Geben Sie Folgendes in das Feld "Ersetzen" ein:

--\1\nSELECT * FROM \1;

Erläuterung

Die Regex-Zeichenfolge kann wie folgt unterteilt werden:

Das ^ ist ein Zeilenanfangsanker und stellt sicher, dass der reguläre Ausdruck mit dem Anfang jeder Zeile übereinstimmt. Dies stellt sicher, dass keine zusätzlichen Leitungen versehentlich aufgenommen werden.

Das (.*) group wird verwendet, um ein beliebiges Zeichen zu finden ( . ) beliebig oft ( * ) und dann, um diese übereinstimmenden Zeichen für die Ersetzungszeichenfolge verfügbar zu machen ( () ) mit dem Platzhalterformat von $x, wobei x die Gruppennummer ist (die sich nacheinander erhöht, mit 1 der erste zu sein, 2 der zweite sein und so weiter).

Die Ersetzungszeichenfolge kann wie folgt unterteilt werden:

--\1 wird zum Drucken von zwei Literalen verwendet - Zeichen, gefolgt von allen Zeichen, die im regulären Ausdruck gefunden wurden (das (.*) Gruppe), die anstelle von eingefügt werden \1.

Das \n wird verwendet, um eine neue Zeile in die Ersetzungszeichenfolge einzufügen ( \r\n Möglicherweise muss stattdessen je nach Betriebssystem verwendet werden, aber ich gehe derzeit davon aus, dass \n allein wird funktionieren).

Das SELECT * FROM \1; Abschnitt wird verwendet, um die Zeichenfolge wie gesehen zu drucken, außer \1 wird wie zuvor durch die übereinstimmenden Zeichen ersetzt (dies ist der Tabellenname).

Matt Champion
quelle
Vielen Dank für die schnelle Bearbeitung. Die Lösung funktioniert, aber das einzige Problem ist, dass der Tabellenname durch $ 1 ersetzt wird. Irgendwelche Einstellungen dafür?
RaMs_YearnsToLearn
@RaMs_YearnsToLearn Wenn Sie die Regex-Option in der unteren linken Ecke des Such- und Ersetzungsfensters ausgewählt haben, bin ich mir nicht sicher, warum sie nicht wie angegeben ersetzt werden würde. Ich habe versucht, die oben genannten Daten mit den von Ihnen angegebenen Daten zu vergleichen, und habe die von Ihnen verknüpfte Ausgabe abgerufen. Theoretisch sollte entweder beides mit regulären Ausdrücken übereinstimmen oder beides nicht, und nicht nur die reguläre Ausdrücke auf die find Feld. Funktioniert der Rest der Ausgabe mit Ausnahme des Tabellennamens?
Matt Champion
@RaMs_YearnsToLearn Tatsächlich scheint es, dass Sie nach weiterer Prüfung das Format verwenden können \1 anstatt $1 (obwohl ich mir nicht sicher bin, warum es auf meiner und nicht auf deiner Maschine funktionieren würde). Behebt die Änderung der Ersetzungszeichenfolge das Problem? In diesem Fall aktualisiere ich die Antwort mit den zusätzlichen Details.
Matt Champion
Ich habe $ 1 durch \ 1 ersetzt und es hat funktioniert. Danke vielmals.
RaMs_YearnsToLearn