[gelöst] Wie Reading mit “;” im Namen löschen?

Begonnen von gestein, 11 Februar 2023, 10:03:30

Vorheriges Thema - Nächstes Thema

gestein

Hallo,

Durch einen Programmierfehler habe ich nun etliche Readings in einem DOIF-Device, die ein ,,;" im Namen enthalten.

Wenn ich die mit deletereading löschen möchte, dann wird der ,,;" als Trennzeichen interpretiert.
Wie kann ich die readings löschen?
Oder muss ich das Device neu anlegen?

Danke im Voraus
Lg, Gerhard

DeeSPe

Lösch doch einfach alle Readings, die werden doch dann wieder neu angelegt.
deletereading <NAME> .+

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

betateilchen

Ergänzung: vor dem empfohlenen deletereading das device in einem zweiten Fenster (oder Tab) ein zweites mal öffnen, dort die raw definition aufrufen und die setstate Zeilen der nicht geünschten readings entfernen.

Im ersten Fenster das deletereading für alle readings ausführen.
Danach das execute im zweiten Fenster ausführen, um alle anderen readings wieder herzustellen.

Ein anschließendes "save config" schreibt auch ein neues statefile ohne die fehlerhaften readings.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wernieman

deletereading kann doch auch Regex, also:
deletereading <NAME-Device> <NAME-Reading>.*

NAME-Reading natürlich ohne das ";".
Hinweis: Vorher prüfen, ob der Name eindeutig ist. Wenn der Reading-Name "Test" ist, löscht obiges RegEx natürlich nicht nur "Test;", sondern auch "TestHilfe" ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

gestein

Vielen Dank für die Tips.

Das mit dem setstate war mir so gar nicht bewusst - echt cool.
Leider habe ich das mit dem regex-Ausdruck habe ich so leider nicht zusammengebracht.
Da waren die Namen zu ähnlich.
Mit besseren Kenntnissen hätte es wahrscheinlich geklappt.

Aber mit alle löschen und dann setstate hat's funktioniert.

Vielen Dank.
Lg, Gerhard