Ich versuche, mit awk aus einer Datei zu drucken, aber meine Ausgabe ist leer. Hier ist mein Code bis jetzt
accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
awk -F',' '{ if($1==accountNum) { print $3.$2 } }' Accounts
done < Accounts
Ich habe auch Folgendes versucht:
accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
echo $LINE | awk -F',' '{ if($1==accountNum) { print $3.$2 } }'
done < Accounts
Die Eingabedatei lautet:
1,Doe,John
2,Rooney,Wayne
3,Smith,Will
4,Crow,Russel
5,Cruise,Tom
Die erwartete Ausgabe beim Ausführen der Datei ist
$./file.sh 3
Will Smith
Aber ich verstehe folgendes
$./file.sh 3
$
Das ist nichts wird ausgedruckt. Ich kenne die Lösung mit Schnitt, aber ich möchte awk verwenden.
while
Schleife entfernen soll ? :)Ihr Skript erledigt den Job praktisch schon ohne
awk
:Ich behaupte nicht, dass dies eine bessere oder effizientere Lösung ist als die
awk
alleinige Verwendung , aber wenn Sie diewhile...read
Schleife wollen , schlägt dies sicherlich separateawk
Prozesse pro Zeile. Nur zu Ihrer Information, denke ich.quelle
Wenn
-v a="$1"
wir dieawk
Variablea
auf den Wert des ersten Befehlszeilenarguments des Skripts setzen, geben wir an, dass die Eingabe durch Kommas getrennt ist-F ','
. Wenn die erste Spalte dem Wert von entsprichta
, drucken Sie die beiden anderen Spalten in umgekehrter Reihenfolge.Sie erhalten nichts in Ihrer Ausgabe, wenn Sie die erste Spalte mit der
awk
Variablen vergleichenaccountNum
, die nicht festgelegt ist.Hätte es einen Eintrag gegeben, dessen erste Spalte 0 (Null) enthielt, wäre dieser Eintrag gedruckt worden. Dies liegt daran, dass der Wert von nicht gesetzten Variablen in
awk
Null ergibt .quelle