我正在尝试从使用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]}