我正在尝试从使用bash运行的负载中提取动力学。我已经到了一个点,我得到了我想要的字符串,现在从这里我想拉一些可以改变的信息。返回的字符串如下:

Records: 2910 Deleted: 0 Skipped: 0 Warnings: 0

每个数字的长度可以也会有所不同,但总体结构将保持不变。我想做的是能够得到这些数字并将它们加载到一些bash变量中,即:
RECORDS=??
DELETED=??
SKIPPED=??
WARNING=??

在regex中,我会这样做:
Records: (\d*?) Deleted: (\d*?) Skipped (\d*?) Warnings (\d*?)

在我的变量中使用4个组。

最佳答案

可以在Bash版本>=3.2中使用regex匹配:

[[ $line =~ ([[:digit:]]+).*([[:digit:]]+).*([[:digit:]]+).*([[:digit:]]+) ]]

RECORDS=${BASH_REMATCH[1]}
DELETED=${BASH_REMATCH[2]}
SKIPPED=${BASH_REMATCH[3]}
WARNING=${BASH_REMATCH[4]}

10-04 21:53