instance, running_time, value, and something
more complex: the last word of a line with more at the beginning.
This word gets the label complex.
Additionally, we want the values of time as hours and minutes.
Note that the order of the labels does not matter and it is not necessary to have all lables in each of the records. An exception is the first label: It defines when to start a new record. (Alternatively one could use the --next switch.)
Command:
text2sus instance running_time value 'complex=^more.* (\w+)'
'time: (?P<hours>.*):(?P<minutes>.*)' < text2sus.txt >
text2sus.sus
The reason for the ' ' in this command is that otherwise the shell gets confused by the * and the spaces.
text2sus.txt
instance: steiner1.stp time: 11:23 blablabla more complicated, we want the last word in this line! 23 value: 123 running_time: 123 instance: steiner2.stp more 44 time: 11:44 value: 312 running_time: 323 instance: steiner3.stp time: 11:55 more 45 value: 32 running_time: 532 instance: steiner4.stp time: 12:04 more 46 value: 44 running_time: 954
text2sus.sus
{'labels': ['instance', 'running_time', 'value', 'complex', 'hours',
'minutes'],
'table': [{'running_time': '123', 'value': '123', 'minutes': '23',
'complex': '23', 'instance': 'steiner1', 'hours': '11'},
{'running_time': '323', 'value': '312', 'minutes': '44', 'complex':
'44', 'instance': 'steiner2', 'hours': '11'},
{'running_time': '532', 'value': '32', 'minutes': '55', 'complex':
'45', 'instance': 'steiner3', 'hours': '11'},
{'running_time': '954', 'value': '44', 'minutes': '04 ', 'complex':
'46', 'instance': 'steiner4', 'hours': '12'}]}