如何从日志中提取文本

如何从日志中提取文本

我正在尝试从日志文件中提取几行。它将具有相同的模式,因此我尝试提取它们之间的所有行。

"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
"

我想要存在于$ $之间的数据。

请帮助我如何使用正则表达式做到这一点

答案1

使用带有 GNU 扩展的 grep

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

使用 Python

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

使用 sed:

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

使用 awk:

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

相关内容