Jak wykonać akcję na wszystkich pasujących grupach, gdy wzorzec pasuje wiele razy w linii?awk wyodrębnić wiele grup z każdej linii
Aby zilustrować, chcę szukać /Hello! (\d+)/
i używać liczb, na przykład wydrukować je lub suma ich, więc na wejściu
abcHello! 200 300 Hello! Hello! 400z3
ads
Hello! 0
Gdybym zdecydował się wydrukować je, bym oczekiwać wyjście
200
400
0
dla Googlersami: pamiętać, że z 'gawk', aka. "GNU awk", możesz faktycznie zrobić to, co tytuł mówi (nie pytanie) w jednym wierszu (np. Przez. Piping): '| gawk -v RS = '' '{print gensub (/()() /, "\\ 1 \\ 2", "g"); } '': D Obsługuje wiele linii (ze względu na' -v RS =' '') i pasujące podgrupy (z powodu używania gawk' gensub') !!! – Andrew