Adr*_*iuk 8 regex awk grouping
当模式在一行中多次匹配时,如何对所有匹配的组执行操作?
为了说明,我想搜索/Hello! (\d+)/并使用数字,例如,打印出来或将它们相加,以便输入
abcHello! 200 300 Hello! Hello! 400z3
ads
Hello! 0
Run Code Online (Sandbox Code Playgroud)
如果我决定将它们打印出来,我会期待它的输出
200
400
0
Run Code Online (Sandbox Code Playgroud)
小智 11
这是一个简单的语法,每个awk(nawk,mawk,gawk等)都可以使用它.
{
while (match($0, /Hello! [0-9]+/)) {
pattern = substr($0, RSTART, RLENGTH);
sub(/Hello! /, "", pattern);
print pattern;
$0 = substr($0, RSTART + RLENGTH);
}
}
Run Code Online (Sandbox Code Playgroud)