如何在awk中获取regExp的子表达式值?

Roy*_*yHu 11 regex linux awk

我正在分析日志包含如下信息:

y1e","email":"","money":"100","coi
Run Code Online (Sandbox Code Playgroud)

我想要获取金钱的价值,我使用'awk'就像:

grep pay action.log | awk '/"money":"([0-9]+)"/' ,
Run Code Online (Sandbox Code Playgroud)

那我怎样才能得到([0-9] +)中的子表达式值?

Pau*_*ce. 5

如果你有GNU AWK(gawk):

awk '/pay/ {match($0, /"money":"([0-9]+)"/, a); print substr($0, a[1, "start"], a[1, "length"])}' action.log
Run Code Online (Sandbox Code Playgroud)

如果不:

awk '/pay/ {match($0, /"money":"([0-9]+)"/); split(substr($0, RSTART, RLENGTH), a, /[":]/); print a[5]}' action.log
Run Code Online (Sandbox Code Playgroud)

两者的结果是100.而且没有必要grep.