Was sind $ 0 und $ 1 in einem awk-Skript? [geschlossen]

7

in awk :

%Vor%

Warum 1 und 3 vergleichen und 2 mit %code% ?

    
0x90 26.03.2013, 20:57
quelle

3 Antworten

7

Eigentlich Beispiel # 2 verwendet eine Regex wegen dieser Syntax

%Vor%

Was in Ihrem Beispiel bedeutet, dass, wenn der literale Text Mary nirgendwo in der ganzen Zeile gefunden wird ( == "Mary" ), führen Sie awk code aus.

Während Mary einen direkten Vergleich zwischen dem Literaltext und dem Feld # 1 ( tolower() ~ /mary/ ) vornimmt.

Schließlich verwendet erneut das Feld "regex-Übereinstimmung" für Feld # 1, was bedeutet, dass mary den Text %code% (ignore-case) hat und dann den Rest des awk-Codes ausführt.

    
anubhava 26.03.2013, 21:06
quelle
17

In awk ist die gesamte Zeile der Argumente, während nur das erste Argument in einer Liste von Argumenten ist, die durch Leerzeichen getrennt sind. Also, wenn ich "Mary hatte ein kleines Lamm" durch awk, %code% ist "Mary", aber %code% ist "Mary hatte ein kleines Lamm". Die zweite Zeile versucht, die Teilzeichenfolge "Mary" in der ganzen Zeile zu finden, die awk zugewiesen ist.

    
Advael 26.03.2013 21:08
quelle
2

Aus der Beschreibung in Ihrem Link (Hervorhebung von mir):

  

Der Ausdruck ist im Allgemeinen eines der Felder oder das Ergebnis von   eine Operation auf einem der Felder. Zum Beispiel das folgende AWK   Filterregeln zeigen, bzw. , wie das erste Feld verglichen wird   "Mary" ohne Berücksichtigung der Groß- / Kleinschreibung, wie man alle Datensätze abgleicht, die das tun   nicht enthalten "Mary" und wie man zuerst einen genauen Vergleich der macht   Feld gegen "Mary":

Also aufschlüsseln:

Erster:

%Vor%

Da es das erste Feld vergleicht, verwendet es

  

wie alle Datensätze übereinstimmen, die "Mary" nicht enthalten,

Da alle Datensätze verglichen werden, wird

verwendet

Dritter

  

und wie man einen genauen Vergleich des ersten Feldes mit "Mary" macht:

Vergleichen Sie das erste Feld erneut, also verwendet es %code% .

    
keyboardP 26.03.2013 21:09
quelle

Tags und Links