我当前的$OUTPUT
值是:
Updating (122 files)
在这种情况下,我想捕获122
并将其分配给变量。
我正在考虑使用像\d*
这样的正则表来捕获数字,但是我不清楚在bash中使用正则表达式的语法。
答案 0 :(得分:2)
只需使用parameter expansion:
$ output='Updating (122 files)'
$ output="${output##*(}"
$ output="${output%% *}"
$ echo "$output"
122
如果您需要更灵活的匹配,可以调整模式。
答案 1 :(得分:2)
使用正则表达式
$ regex="Updating \(([[:digit:]]+) files\)"
$ [[ $OUTPUT =~ $regex ]]
$ echo ${BASH_REMATCH[1]}
122
在这种情况下,有足够的上下文可以将正则表达式简化为
regex="Updating \((.*) files\)"
答案 2 :(得分:1)
我会用sed:
OUTPUT=$(echo $OUTPUT| sed 's/[^0-9]//g')
例如,删除所有非数字字符。