Como extrair texto dos logs


-1

Eu 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

Respostas:


2

Usando o grep com extensões do GNU

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

Usando 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.