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
Answer
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);
}
}
No comments:
Post a Comment