Tatsächlich. Ich wurde mit der Bash-Syntax verwechselt ...
nicoco
Es ist eine gute Frage, und obwohl die Antwort zeigt, dass die $falsch platziert wurde, bin ich nicht sicher, ob sie als Tippfehler geschlossen werden sollte. Ich habe in letzter Zeit mehrere davon gesehen, also brauchen wir vielleicht eine kanonische
roaima
Antworten:
45
Variablen werden mit Namen wie in varund nicht $varin referenziert awk. $nbezieht sich auf das ndritte Feld : $1für das erste Feld, $2für das zweite ... oder den gesamten Datensatz für n== 0 ( $0ist der vollständige Datensatz).
Das müssen keine wörtlichen Zahlen sein. Sie können $(1+1)oder verwenden $variable. Wenn variableenthält 1, $variablewird das erste Feld sein. Eine häufig verwendete ist $NFfür das letzte Feld ( NFist die spezielle Variable, die die Anzahl der Felder enthält).
Wenn Sie , wie in Ihrem Beispiel ist die Variable nicht eine Nummer enthalten, dass nicht-Nummer wird als 0 verstanden.
Ist var="content"; print $varalso dasselbe wie var=0; print $varund damit dasselbe wie print $0, dass der gesamte Datensatz gedruckt wird.
$
von $ var$
falsch platziert wurde, bin ich nicht sicher, ob sie als Tippfehler geschlossen werden sollte. Ich habe in letzter Zeit mehrere davon gesehen, also brauchen wir vielleicht eine kanonischeAntworten:
Variablen werden mit Namen wie in
var
und nicht$var
in referenziertawk
.$n
bezieht sich auf dasn
dritte Feld :$1
für das erste Feld,$2
für das zweite ... oder den gesamten Datensatz fürn
== 0 ($0
ist der vollständige Datensatz).Das müssen keine wörtlichen Zahlen sein. Sie können
$(1+1)
oder verwenden$variable
. Wennvariable
enthält1
,$variable
wird das erste Feld sein. Eine häufig verwendete ist$NF
für das letzte Feld (NF
ist die spezielle Variable, die die Anzahl der Felder enthält).Wenn Sie , wie in Ihrem Beispiel ist die Variable nicht eine Nummer enthalten, dass nicht-Nummer wird als 0 verstanden.
Ist
var="content"; print $var
also dasselbe wievar=0; print $var
und damit dasselbe wieprint $0
, dass der gesamte Datensatz gedruckt wird.Was Sie hier wollen, ist:
quelle