.cfg Datei Analysieren und Zeilen Stellenweise abändern

Diskutiere .cfg Datei Analysieren und Zeilen Stellenweise abändern im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo allesamt :) ich hab ein kleines Problem. Ich will mittels eines Shell Skriptes in einer Datei die Namensgebung einiger Geräte ändern. Ich...

  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. #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. Dateiinhalt verdoppeln

    Dateiinhalt verdoppeln: Hallo, ich möchte den Inhalt einer Datei verdoppeln, Kopf- und Endesatz ausgenommen. Danach muss im Endesatz die Datensatzanzahl angepasst werden...
  2. Dateien in Unix finden, die mehrere Strings beinhalten

    Dateien in Unix finden, die mehrere Strings beinhalten: Hallo liebe Leute, ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB...
  3. Textdatei filtern und löschen mit grep /sed

    Textdatei filtern und löschen mit grep /sed: Guten morgen liebe Forenmitglieder, da ich etliche Jahre in Sachen Linux pausiert habe und nun wegen beruflichem Wechsel wieder dort einsteige...
  4. Fragen zu stty, quotes und Datein (flush)

    Fragen zu stty, quotes und Datein (flush): Hi, ich schreibe seit ein paar Tagen ein Skript, dass über die Serielle Schnittstelle kommuniziert. Leider gibt es noch zwei Probleme, die ich...
  5. NFS durch Symlink auf lokales Dateisystem entlasten

    NFS durch Symlink auf lokales Dateisystem entlasten: Hallo zusammen, ich bin neu hier und auch nicht sicher ob ich mich hier im richtigen Forum befinde... Darum schon mal sorry wenn es eigentlich...