如何在awk中获取regExp的子表达式值? [英] how to get sub-expression value of regExp in awk?

查看:97
本文介绍了如何在awk中获取regExp的子表达式值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在分析日志,其中包含以下信息:

I was analyzing logs contains information like the following:

y1e","email":"","money":"100","coi

我想获取金钱的价值,我用'awk'像这样:

I want to fetch the value of money, i used 'awk' like :

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

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

then how can i get the sub-expression value in ([0-9]+) ?

推荐答案

如果您有GNU AWK(gawk):

If you have GNU AWK (gawk):

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

如果不是:

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

其中一个的结果为100.而且不需要grep.

The result of either is 100. And there's no need for grep.

这篇关于如何在awk中获取regExp的子表达式值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆