Awk UND Operator

8

Eine grundlegende Frage zu UND logischen Operator. Ich versuche, einige Felder in meiner Datendatei niveles.csv basierend auf den Werten der Spalten 1 und 2 zu extrahieren. Ich möchte einen awk-Satz schreiben, der sagt: "wenn field1 = date und field2 = area dann drucke Felder 3 bis 5" .

Meine Datendatei sieht wie

aus %Vor%

awk-Satz in einem Bash-Skript ist

%Vor%

Aber das gibt nur Felder für die drei Fälle, in denen die Bereichsnummer eine 8 hat (8,18 und 28), während ich nur Daten für Bereich 8 haben möchte

%Vor%

Vielen Dank im Voraus für Ihre Aufmerksamkeit, sicher, es ist eine einfache Frage für erfahrene Benutzer.

    
pacomet 25.10.2012, 11:24
quelle

4 Antworten

7

Nicht getestet:

%Vor%

$ 2 ~ / 8 / - & gt; Das bedeutet, wenn das 2. Feld 8 enthält

$ 2 == 8 - & gt; Das bedeutet, wenn das 2. Feld gleich 8 ist     

Guru 25.10.2012, 11:34
quelle
9

Verwenden Sie die Option awk -v , um awk-Variablen zu erstellen, die die Shell-Variablen enthalten.

%Vor%     
Barmar 25.10.2012 12:00
quelle
6

Da diese Frage aufgrund ihres Titels viel Aufmerksamkeit erhält, möchte ich eine allgemeinere Antwort veröffentlichen, die beschreibt, wie der Operator AND in awk verwendet wird.

Angenommen, Sie haben eine Datei myfile :

%Vor%

Wenn Sie nach einer Möglichkeit suchen, mehrere Überprüfungen mit dem Operator AND durchzuführen, müssen Sie && wie folgt verwenden:

%Vor%

Was zurückkehren würde:

%Vor%

Im Allgemeinen können Sie so viele Bedingungen verwenden, wie Sie möchten, unter Berücksichtigung, dass

%Vor%

Sie können also mehrere logische Ausdrücke kombinieren, wie zum Beispiel:

%Vor%     
fedorqui 13.10.2015 13:47
quelle
0

Das sollte in Ordnung sein, ich habe es ein wenig getestet:

%Vor%

Wenn Sie die Felder date und area dort haben wollen, sieht die awk-Anweisung folgendermaßen aus:

%Vor%     
pedrevans 25.10.2012 12:24
quelle

Tags und Links