Wie führe ich Aktionen für alle übereinstimmenden Gruppen aus, wenn das Muster mehrfach in einer Zeile übereinstimmt?
Zur Veranschaulichung möchte ich nach /Hello! (\d+)/
suchen und die Zahlen verwenden, zum Beispiel ausdrucken oder summieren, also für die Eingabe
Wenn ich mich entscheiden würde, sie auszudrucken, würde ich die Ausgabe von
erwarten %Vor%Dies ist eine einfache Syntax, und jedes awk (nawk, mawk, gawk, usw.) kann dies verwenden.
%Vor% Dies ist gawk
Syntax. Es funktioniert auch für Muster, wenn kein fester Text als Datensatztrennzeichen verwendet werden kann und nicht über Zeilenumbrüche passt:
Es gibt keine gawk-Funktion, um dasselbe Muster mehrmals in einer Zeile zu finden. Es sei denn, Sie wissen genau, wie oft das Muster wiederholt wird.
Damit müssen Sie "manuell" auf alle Übereinstimmungen in derselben Zeile iterieren. Für Ihre Beispieleingabe wäre das:
%Vor%Wenn das Muster über einen Zeilenvorschub übereinstimmen soll, müssen Sie das Eingabesatztrennzeichen - RS
ändern