So verwenden Sie die erweiterte Bearbeitung in Notepad ++ oder ähnlichem

892
Tonto

Ich möchte Textabschnitte auf folgende Weise bearbeiten können.

Ich könnte einen Abschnitt haben, wie unten gezeigt.

Beispiel.

Instance=wall  {  VisGroups=(32) MeshFile=wall.gmt CollTarget=False HATTarget=False  } 

Ich muss den gewünschten Abschnitt anhand des 'Instanz'-Namens in diesem Fall' Wand 'finden und dann das Skript in Zeile 4 ändern

Ich möchte CollTarget und HatTarget in True ändern,

Ein einfacher Fall von Ausschneiden / Einfügen, wenn es nur ein- oder zweimal ist, aber es kann bis zu 500-mal sein und die Abschnitte werden im gesamten Text verstreut sein. Einige Bereiche haben dasselbe Skript, dh CollTarget = False HATTarget = False, was nicht gilt müssen bearbeitet werden. Die Datei kann 5000 Zeilen lang sein, ähnlich dem BEISPIEL unten

Instance=object350  {  MeshFile=object350.gmt CollTarget=False HATTarget=False   }  Instance=box056  {  VisGroups=(32) MeshFile=box056.gmt CollTarget=False HATTarget=False   }  Instance=wall01  {  VisGroups=(32) MeshFile=wall.gmt CollTarget=True HATTarget=False   }  Instance=track01  {  MeshFile=track01.gmt CollTarget=True HATTarget=True } 

Beachten Sie auch, dass die Zeilen zwischen den Klammern nicht alle gleich sind


Aber im folgenden Abschnitt möchte ich das vielleicht nicht tun.

Instance=20road007  {  VisGroups=(32) MeshFile=20road007.gmt CollTarget=False HATTarget=True Response=VEHICLE,TERRAIN   } 

Fügen Sie ein zusätzliches Skript hinzu oder fügen Sie ein Skript hinzu oder löschen Sie ein Skript vollständig


Ist das mit einem Makro möglich? Könnte ich etwas in Notepad ++ machen ... es hat viele Befehle? Muss ich ein 'BASIC'-Programm schreiben? Ich verstehe keine Makros und meine Programmierung ist begrenzt.

Wie würde ich das machen? Es wäre so eine Zeitersparnis. Ich hoffe ich habe mich klar gemacht.

Jede Hilfe wäre sehr dankbar. Danke dir

0
Ihre Frage ist vage. Sie geben das Werkzeug (Notepad ++) und Beispiele des zu bearbeitenden Textes an, aber Sie wissen nicht genau, was Sie erreichen wollen. Um einen Prozess zu automatisieren, muss etwas über die zu ändernden Teile wahr sein, nicht jedoch über die Teile, die unverändert bleiben müssen. Was ist das für dein Beispiel? Dane vor 10 Jahren 2

1 Antwort auf die Frage

1
Jerren Saunders

Ich mache einige Annahmen, aber es scheint, dass Sie alle Zeilen finden möchten, die enthalten

MeshFile=<someValue>.gmt 

Aktualisieren Sie anschließend die Parameter für CollTarget und HATTarget auf TRUE, ohne die anderen Parameter in dieser Zeile zu berühren.

Angenommen, CollTarget und HATTarget sind immer die ersten beiden Parameter, und in derselben Reihenfolge können Sie den Befehl Alles ersetzen (STRG + H) für Ihre Datei ausführen und Folgendes ausführen:

Find what = (.*)(wall.gmt) CollTarget=(\w+) HATTarget=(\w+)(.*) Replace with = $1$2 CollTarget=True HATTarget=True$5 

Erläuterung:

  • Allgemeine Syntax finden Sie in der Notepad ++ - Regex-Dokumentation ( http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Regular_Expressions ).
  • Jeder Wert, den das Muster in Klammern findet, steht in der "$ N" -Syntax zur Verfügung. Die Anzahl entspricht der Anzahl der Klammerpaare im Suchausdruck.
  • Ändern Sie den Wert im zweiten Klammerpaar, um den Instanznamen zu ändern, für den Sie ein Ersetzen / Aktualisieren durchführen möchten. In meinem Beispiel habe ich wall.gmt verwendet
  • Der Ersetzungsausdruck kann übersetzt werden in:
    • Fügen Sie etwas ein, das am Anfang der Zeile vor dem Instanznamen gefunden wurde - das Zeug, das mit "(. *)" Gefunden wurde.
    • Geben Sie den Instanznamen ein, nach dem gesucht wurde (damit Sie ihn nicht in den Such- und Ersetzungsausdruck eingeben müssen).
    • Geben Sie die neuen Werte an CollTarget und HATTarget weiter
    • Hängen Sie alles an, was nach HATTarget gefunden wurde

Wenn ich davon ausgehe, dass CollTarget und HATTarget nicht immer die erste oder in der gleichen Reihenfolge sind, müssen Sie den Suchausdruck in zwei getrennte Such- und Ersetzungsaufrufe ändern, bei denen zuerst nur CollTarget gesucht und der Wert dieses Parameters aktualisiert wird, dann ein zweiter um nach HATTarget zu suchen und es zu aktualisieren.