.cfg Datei Analysieren und Zeilen Stellenweise abändern

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von SchorschM, 27.01.2015.

  1. #1 SchorschM, 27.01.2015
    Zuletzt bearbeitet: 27.01.2015
    SchorschM

    SchorschM Grünschnabel

    Dabei seit:
    27.01.2015
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo allesamt :)

    ich hab ein kleines Problem.
    Ich will mittels eines Shell Skriptes in einer Datei die Namensgebung einiger Geräte ändern.
    Ich habe z.B. zwei Geräte vom Model model HM-SEC-WDS mit der ID 1E4D68 und model HM-SEC-SC mit der ID 1A05AE.
    Jetzt möchte ich in jeder Zeile alle Vorkommnise des Strings CUL_HM_threeStateSensor_1E4D68 in CUL_HM_HM-SEC-WDS_1E4D68 umbenennen
    und in jeder Zeile alle Vorkommnise des Strings von CUL_HM_threeStateSensor_1A05AE in CUL_HM_HM-SEC-SC_1A05AE umbenennen.
    Natürlich sollte das ganze variable sein. So könnte statt threeStateSensor auch thermostat und blablabla dastehen ^^
    Der Beginn jedes Ausdrucks CUL_HM ist fest.

    Ich muss also zuerst nach mode suchen und anhand dieser Zeile die ID bestimmen. Anschließend müsste ich alle Zeilen in denen diese ID vorkommt
    umändern. Gespeichert werden soll in das gleiche File.
    Nur nach der ID suchen geht nicht. Diese wird dynamisch angelegt und ich habe nicht immer Einsicht in das File.
    Hat jemand eine Idee wie ich das bewerkstelligen kann? Hab mit Shell noch relativ wenig Erfahrung.

    Hoffe ich konnte das Problem halbwegs logich erklären.

    Gruß schorsch


    Auszug der config Datei. Diese umfasst in echt mehrere hundert Zeilen Code.
    Code:
    define CUL_HM_threeStateSensor_1E4D68 CUL_HM 1E4D68
    attr CUL_HM_[COLOR=#0000ff]threeStateSensor_1E4D68[/COLOR] .devInfo 110101
    attr CUL_HM_threeStateSensor_1E4D68 .stc 80
    attr CUL_HM_threeStateSensor_1E4D68 actCycle 028:00
    attr CUL_HM_threeStateSensor_1E4D68 actStatus unknown
    attr CUL_HM_threeStateSensor_1E4D68 expert 2_full
    attr CUL_HM_threeStateSensor_1E4D68 firmware 1.1
    attr CUL_HM_threeStateSensor_1E4D68 [COLOR=#ff0000]model HM-SEC-WDS[/COLOR]
    attr CUL_HM_threeStateSensor_1E4D68 peerIDs
    attr CUL_HM_threeStateSensor_1E4D68 room CUL_HM
    attr CUL_HM_threeStateSensor_1E4D68 serialNr JEQ0714363
    attr CUL_HM_threeStateSensor_1E4D68 subType threeStateSensor
    define FileLog_CUL_HM_threeStateSensor_1E4D68 FileLog /var/log/fhem/CUL_HM_threeStateSensor_1E4D68-%Y.log CUL_HM_threeStateSensor_1E4D68
    attr FileLog_CUL_HM_threeStateSensor_1E4D68 logtype text
    attr FileLog_CUL_HM_threeStateSensor_1E4D68 room CUL_HM
    define AASendToCommandServerSwitchSensor notify (CUL_HM_remote.*.Btn1.*|CUL_HM_motionDetector.*.motion.*.on.*|EnO_switch.*.channel.*|EnO_switch.*.buttons.*|EnO_sensor.*.motion.*.on.*) { my $ret = sendCommandToServer("%EVENT", "%NAME", "%TYPE");; return $ret;; }
    attr AASendToCommandServerSwitchSensor forwardReturnValue 1
    define AEventToCommandServerSwitchSensor notify (CUL_HM_motionDetector.*.motion.*.on.*|CUL_HM_threeStateSensor.*.wet|CUL_HM_threeStateSensor.*.damp|CUL_HM_smokeDetector.*.smoke-Alarm) { my $ret = sendEventToServer("%EVENT", "%NAME", "%TYPE");; return $ret;; }
    define CUL_HM_threeStateSensor_1A05AE CUL_HM 1A05AE
    attr CUL_HM_[COLOR=#0000ff]threeStateSensor_1A05AE[/COLOR] .devInfo 810101
    attr CUL_HM_threeStateSensor_1A05AE .stc 80
    attr CUL_HM_threeStateSensor_1A05AE actCycle 028:00
    attr CUL_HM_threeStateSensor_1A05AE actStatus alive
    attr CUL_HM_threeStateSensor_1A05AE firmware 2.0
    attr CUL_HM_threeStateSensor_1A05AE [COLOR=#ff0000]model HM-SEC-SC[/COLOR]
    attr CUL_HM_threeStateSensor_1A05AE room CUL_HM
    attr CUL_HM_threeStateSensor_1A05AE serialNr JEQ0069793
    attr CUL_HM_threeStateSensor_1A05AE subType threeStateSensor
    define FileLog_CUL_HM_threeStateSensor_1A05AE FileLog /var/log/fhem/CUL_HM_threeStateSensor_1A05AE-%Y.log CUL_HM_threeStateSensor_1A05AE
    attr FileLog_CUL_HM_threeStateSensor_1A05AE logtype text
    attr FileLog_CUL_HM_threeStateSensor_1A05AE room CUL_HM
    
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 SchorschM, 28.01.2015
    SchorschM

    SchorschM Grünschnabel

    Dabei seit:
    27.01.2015
    Beiträge:
    4
    Zustimmungen:
    0
    Hi, hab es nach etwas Hilfe von einem Kolegen heute hinbekommen :)

    Code:
    ##########################################################
    echo "Ersetzen des Ausdrucks threeStateSensor durch HM_SEC_SC"
    
    ID1=`awk 'BEGIN {FS="_| "} $0~/HM-SEC-SC$/ {print $5}' /etc/fhem.cfg`
    echo $ID1
    sed -e "s/\(threeStateSensor\)_\($ID1\)/\HM_SEC_SC_\2/g" -i /etc/fhem.cfg
    
    ##########################################################
    echo "Ersetzen des Ausdrucks threeStateSensor durch HM_SEC_WDS"
    
    ID2=`awk 'BEGIN {FS="_| "}  $0~/HM-SEC-WDS$/ {print $5}' /etc/fhem.cfg`
    echo $ID2
    sed -e "s/\(threeStateSensor\)_\($ID2\)/\HM_SEC_WDS_\2/g" -i /etc/fhem.cfg
    
     
Thema:

.cfg Datei Analysieren und Zeilen Stellenweise abändern

Die Seite wird geladen...

.cfg Datei Analysieren und Zeilen Stellenweise abändern - Ähnliche Themen

  1. Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...

    Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...: Ich habe eine Textdatei in der ich Einträge bis zum 3. Leerzeichen mit den restlichen Zeilen (auch nur bis 3. Leerzeichen) vergleichen muss und...
  2. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  3. Dateiinhalte vergleichen - Neue Sätze dann ausgeben

    Dateiinhalte vergleichen - Neue Sätze dann ausgeben: Liebe Forumsmitglieder, ich benöte mal wieder Eure Hilfe: Ich möchte 2 Dateien vergleichen. Datei-1 hat z.B. 100 Datensätze mit mehreren Feldern...
  4. Dateien selektieren und zählen

    Dateien selektieren und zählen: Hallo, das ist mein erster Beitrag, bitte entschuldigt, falls nicht alles richtig geschrieben ist. Ich muss meine erste Hausaufgabe als...
  5. Timestamp an Inhalt einer Textdatei anfügen

    Timestamp an Inhalt einer Textdatei anfügen: Hallo, ich als neuer, unerfahrener Nutzer von Linux und der bash hätte folgende Frage. Und zwar würde ich gerne mit einem command den Zeitstempel...