AWK提取多个组每行 [英] awk extract multiple groups from each line
本文介绍了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屋!
查看全文