Como obter `expr match` para extrair o par de valores-chave delimitado por dois pontos?

Como obter `expr match` para extrair o par de valores-chave delimitado por dois pontos?

Dado: myvar="present-value: 1", eu esperaria expr match "$myvar" '\([0-9]\)'produzir 1. No entanto, em vez disso, a saída é em branco e sai com um código de status diferente de zero, indicando nenhuma correspondência.

Como posso fazer com que corresponda?

Responder1

Isso funcionou para mim

myvar="present value: 4"
expr match "$myvar" '.*\([0-9]\)'

Saída:

4

Responder2

De acordo com a experpágina de manual, matché para um arquivo anchored pattern match of REGEXP in STRING. O REGEX está ancorado em ambas as extremidades do STRING, portanto não pode corresponder apenas a uma substring.

informação relacionada