Как выполнить действие во всех сопоставимых группах, когда шаблон соответствует несколько раз в строке?awk извлекает несколько групп из каждой строки
Для иллюстрации я хочу найти /Hello! (\d+)/
и использовать цифры, например, распечатать их или суммировать их, так что для ввода
abcHello! 200 300 Hello! Hello! 400z3
ads
Hello! 0
Если я решил напечатать их, я бы ожидать, выход
200
400
0
Для Googlers: обратите внимание, что с 'gawk', ака. «GNU awk», вы действительно можете сделать то, что говорит название (не вопрос) в одной строке (например, через.): '| gawk -v RS = '' '{print gensub (/()() /, "\\ 1 \\ 2", "g"); } '': D Это поддерживает многострочный (из-за' -v RS =' '') и соответствующих подгрупп (из-за использования gawk' gensub') !!! – Andrew