Temos um problema semelhante com os relatórios de cotas do GPFS. A solução mais básica seria ter um regex que permita obter o que quer que exista na forma que você esperaria encontrar e depois analisá-lo em uma próxima etapa. Por exemplo, em Python
#!/usr/bin/env python
import re
import sys
GRACE_REGEX = re.compile(r"Block grace time: (?P<days>\d+)\s*days?|(?P<hours>\d+):(?P<minutes>\d+)")
for line in sys.stdin.readlines():
grace = GRACE_REGEX.search(line)
if not grace:
continue
grace_groups = grace.groupdict()
if grace_groups.get('days', None):
print "Found days: %d or in seconds: %d" % (
int(grace_groups['days']),
int(grace_groups['days']) * 86400)
if grace_groups.get('hours', None):
print "Found hours: %d and minutes: %d or in seconds: %d" % (
int(grace_groups['hours']),
int(grace_groups['minutes']),
int(grace_groups['hours']) * 3600 + int(grace_groups['minutes']) * 60)
Dadas as linhas de exemplo
Block grace time: 7days; Inode grace time: 7days
Block grace time: 4:10; Inode grace time: 7days
Você obteria a seguinte saída:
Found days: 7 or in seconds: 604800
Found hours: 4 and minutes: 10 or in seconds: 15000