Como extrair texto dos logs

-1

Estou tentando extrair algumas linhas do arquivo de log. Ele terá o mesmo padrão, então estou tentando extrair todas as linhas entre eles.

"FLOW:ReserveCapacitiesStep:PrecheckCapacity-X:belowMaxCapacityList: 4
Y918
Y251
Y887
X233
$onMaxCapacityList: 5
Y100
X069
Y010
Y400
Y401
$aboveMaxCapacityList: 0
overruledCapacityList: 0
reservedCapacities: 8
Y918
Y251
Y887
X233
X468
X081
X082
Y001
commonCapacities: 0
mandatoryCapacityList: 2
Y100
Y010
abort:false
"

Eu quero dados que existam entre os $ $.

Por favor me ajude como eu posso fazer isso usando regex

    
por anudeep 22.11.2017 / 22:02

1 resposta

2

Usando grep com extensões GNU

$ grep -ozP '[$][^$]*[$][^\n]*\n' logfile
$onMaxCapacityList: 5
Y100
X069
Y010
Y400
Y401
$aboveMaxCapacityList: 0

Usando o Python

$ python -c 'import re; print(re.search(r"[$][^$]*[$][^\n]*", open("logfile").read()).group())'
$onMaxCapacityList: 5
Y100
X069
Y010
Y400
Y401
$aboveMaxCapacityList: 0

Usando sed:

$ sed -n '/^[$]/,/^[$]/p' logfile
$onMaxCapacityList: 5
Y100
X069
Y010
Y400
Y401
$aboveMaxCapacityList: 0

Usando o awk:

$ awk '/^[$]/{print; f=!f; next} f{print}' logfile
$onMaxCapacityList: 5
Y100
X069
Y010
Y400
Y401
$aboveMaxCapacityList: 0
    
por 22.11.2017 / 22:11

Tags