I’m writing a perl script which extracts values from one file with message definitions and uses them to update a config file.
For example:
Message Definition File (ICD.txt):
MESSAGE: FOO_TELEM
latitude [-90,90]
longitude [-180,180]
MESSAGE: FOO_FREQUENCY
airPressure [0,50]
engineSpeed [0,65500]
Where the FOO_TELEM message has members latitude with range -90 to 90 and longitude with range -180 to 180.
Config file (Config.txt):
MessageTable
Message FOO_TELEM
Member latitude DOUBLE End-Member
Member longitude DOUBLE End-Member
End-Message
Message FOO_FREQUENCY
Member airPressure ULONG End-Member
Member engineSpeed ULONG End-Member
End-Message
End-MessageTable
I’d like to be able to update the config file (Config.txt) with the constraint values contained in the message definition file (ICD.txt), so that the result would look like this:
Updated Config file (Config.txt):
MessageTable
Message FOO_TELEM
Member latitude DOUBLE CONSTRAINT -90 90 End-Member
Member longitude DOUBLE CONSTRAINT -180 180 End-Member
End-Message
Message FOO_FREQUENCY
Member airPressure ULONG CONSTRAINT 0 50 End-Member
Member engineSpeed ULONG CONSTRAINT 0 65500 End-Member
End-Message
End-MessageTable
I’ve tried various forms of grep to get the results I need but have been unsuccessful. Any suggestions would be greatly appreciated. I’m open to any solutions involving grep, sed and/or perl.
Here’s a shot at it. I’m going to double-use
DATAfor my files, because I shouldn’t have to write the open/close logic.