AWK提取多个组每行 [英] awk extract multiple groups from each line

查看:116
本文介绍了AWK提取多个组每行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何执行所有匹配的组时的动作模式在一条线上多次匹配?

要说明这一点,我想搜索 /您好! (\\ D +)/ ,并使用数字,例如,打印出来,或和他们,所以输入

  abcHello! 200 300您好!你好! 400z3
广告
你好! 0

如果我决定要打印出来,我期望的输出

  200
400
0


解决方案

这是一个简单的语法,每一个AWK(NAWK,mawk,呆子,等等)可以用这个。

  {
    而(匹配($ 0 /您好![0-9] + /)){
        模式= SUBSTR($ 0 RSTART,RLENGTH);
        子(!/你好/,,图案);
        印刷图案;
        $ 0 = SUBSTR($ 0 RSTART + RLENGTH);
    }
}

How do I perform action on all matching groups when the pattern matches multiple times in a line?

To illustrate, I want to search for /Hello! (\d+)/ and use the numbers, for example, print them out or sum them, so for input

abcHello! 200 300 Hello! Hello! 400z3
ads
Hello! 0

If I decided to print them out, I'd expect the output of

200
400
0

解决方案

This is a simple syntax, and every awk (nawk, mawk, gawk, etc) can use this.

{
    while (match($0, /Hello! [0-9]+/)) {
        pattern = substr($0, RSTART, RLENGTH);
        sub(/Hello! /, "", pattern);
        print pattern;
        $0 = substr($0, RSTART + RLENGTH);
    }
}

这篇关于AWK提取多个组每行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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