Com alguns comandos do módulo re
, podemos montar um script Python da seguinte forma:
#!/usr/bin/env python3
import sys,re
with open(sys.argv[1]) as fd:
for line in fd:
items = re.findall(r'SEM=[^(]+?\]',line)
for i in items:
tokens = filter( lambda x: x != 'SEM' and x, re.split('=|]',i) )
print("\n".join(tokens))
Com sua entrada específica que produz:
$ ./get_sem_vals.py ./input.txt
50
'times'
4
Eu também tomei a liberdade para considerar possíveis valores múltiplos de SEM
na mesma linha. Se modificarmos sua segunda linha como
(NUM[SEM=(50, unknown, unknown)] (DIZAINE[SEM=50] cinquante, ATHING=[SEM=25]))
o script produz a seguinte saída:
$ ./get_sem_vals.py ./input.txt
50
25
'times'
4