Batch Änderung von SVG Plot title

Begonnen von Olaf234, 17 Februar 2023, 14:37:37

Vorheriges Thema - Nächstes Thema

Olaf234

Hallo Experten,
ich habe gefühlt 100 SVG Plots am laufen. Jetzt möchte ich gerne den Plot Titel auf  "<TL> / <L1>" ändern, finde dazu aber keine Möglichkeit dies aus der
Kommandozeile heraus zu tun weil es kein set Befehl dafür gibt.
Ich habe recherchiert und scheinbar hat ein member auch schon mal eine Änderung angeregt, die aber verworfen wurde. Ansonsten finde ich nichts. Alle einzeln zu ändern würde Stunden dauern :/
Hat jemand eine Idee?

betateilchen

Falscher Forumbereich für Fragen zu SVG. Egal...

Der plot title steht ja nicht im SVG device, sondern im zugehörigen gplot-File.
Auf Betriebssystemebene kannst Du die gplot-Files z.B. mit sed bearbeiten und die Änderung automatisiert vornehmen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Olaf234

Danke für Deine Antwort aber ich fürchte das kann ich nicht. Ich hab aber google gefragt.. könnte es sein das es mit
Zitatsed s/'<L1>'/'<TL> / <L1>'/g SVG.*.gplot
funktioniert?

betateilchen

Zitat von: Olaf234 am 17 Februar 2023, 14:54:54
Ich hab aber google gefragt.. könnte es sein das es mit

sed s/'<L1>'/'<TL> / <L1>'/g SVG.*.gplot

funktioniert?

Nicht ganz, aber so:

sed -i "s,'<L1>','<TL> / <L1>'," *.gplot

Erläuterung:


  • Der Parameter -i ist notwendig, damit überhaupt was passiert.
  • Der gesamte Ausdruck zum Suchen und Ersetzen sollte in Anführungszeichen stehen. Da Du in den Mustern schon das einfache Anführungszeichen verwendest, nehmen wir außenrum einfach die doppelten.
  • Anstatt / zur Trennung von Such- und Ersatztext verwenden wir einfach ein Komma, weil in den Texten selbst ein / vorkommt. Damit erspart man sich das escapen.
  • Das SVG am Anfang des Dateinamenmusters lässt man weg, nicht jedes gplot File beginnt mit SVG, der Name ist ja frei vom Anwender wählbar. Aber .gplot sollte immer die Endung sein.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Und bitte daran denken: Die Attribute "label" und "title" sind deprecated.
Stattdessen bitte das Attribut "plotReplace" benutzen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Olaf234

Danke für die Korrektur. Ich teste das am Montag gleich aus. Dazu muss ich nur die eigen beschriebenen svg's kurzfristig auds dem Ordner rausschieben, denn da stehen noch andere, die ich nicht erstellt habe.

Das das Attribut title deprecated ist wusste ich nicht  :-[ und ich kann gar nicht so richtig erkennen ob ich mit plotReplace mein Ziel erreichen kann. Ich möchte mit einem DOIF den Alias eines Sensors an das dazugehörige SVG übergeben. Das hab ich mir geschrieben: (attr SVG_FileLog_Sensor01_1 title [Sensor01:alias])
Damit kann ich dann,vorrausgesetzt im Header des SVG steht <TL>, den Alias des Sensors anzeigen lassen.

betateilchen

Zitat von: Olaf234 am 17 Februar 2023, 15:21:44
ich kann gar nicht so richtig erkennen ob ich mit plotReplace mein Ziel erreichen kann.
Ich möchte mit einem DOIF den Alias eines Sensors an das dazugehörige SVG übergeben.
Das hab ich mir geschrieben:
(attr SVG_FileLog_Sensor01_1 title [Sensor01:alias])
Damit kann ich dann,vorrausgesetzt im Header des SVG steht <TL>, den Alias des Sensors anzeigen lassen.

Warum sollte das nicht funktionieren?

attr SVG_FileLog_Sensor01_1 plotReplace TL={AttrVal('Sensor01','alias','?')}

Du musst nur schauen, wie Du das in Dein DOIF eintragen musst.
DOIF kommt mir nicht ins Haus *grusel*
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: Olaf234 am 17 Februar 2023, 15:21:44
Ich möchte mit einem DOIF den Alias eines Sensors an das dazugehörige SVG übergeben.

Nur mal interessehalber: warum möchte man sowas?
Warum kannst Du das nicht einfach im SVG direkt angeben?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Olaf234

Ich benötige diese variablen Verknüpfungen weil ich mit vielen Nutzern viele Sensoren betreibe. Die Kennzeichnung spielt dabei eine wesentliche Rolle. Häufige Anderungswünsche sind dann vorprogrammiert. Deswegen setze ich auf größte Flexibilität und geringsten Aufwand.
Ausserdem ist es somit möglich das System weitestgehend zu klonen. Das ist mir auch wichtig.

Olaf234

Wie versprochen, hier meine Rückmeldung. Der sed Befehl funktioniert super! Ich habe es ohne Probleme anwenden können.

tausend Dank für diese super Hilfe. Du hast mir sooo viel Arbeit erspart und ich konnte wieder etwas neues dazu lernen.

sonnige Grüße und einen guten Start in die Woche!