awk Extrahieren Sie mehrere Gruppen aus jeder Zeile

8

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

%Vor%

Wenn ich mich entscheiden würde, sie auszudrucken, würde ich die Ausgabe von

erwarten %Vor%     
Adrian Panasiuk 12.07.2009, 15:08
quelle

4 Antworten

10

Dies ist eine einfache Syntax, und jedes awk (nawk, mawk, gawk, usw.) kann dies verwenden.

%Vor%     
Hirofumi Saito 13.07.2009, 09:54
quelle
1

GNU awk

%Vor%     
ghostdog74 12.07.2009 15:31
quelle
0

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:

%Vor%     
Adrian Panasiuk 12.07.2009 16:20
quelle
0

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     
CsTamas 27.07.2009 07:05
quelle

Tags und Links