Ich kann anscheinend nicht den Befehl awk erhalten, um die zweite Datenspalte abzurufen.
Bash Code:
filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)
printf "$filter_data \n"
Die Variable $ filter ist entweder der Wert von Download oder Upload, der an das Shell-Skript übergeben wird. Awk verwendet also den Begriff Download oder Upload, um nach der richtigen Zeile zu suchen.
Der Dateiinhalt ist:
Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s
Ich versuche nur die Zahlen zu bekommen und nichts anderes, ex 51.13
und 57.38
.
awk
'sprintf
Antworten:
Sie müssen einfache Anführungszeichen für den awk-Programmkörper verwenden, damit die awk-Variablen nicht von der Shell erweitert werden. So sollten Sie eine Shell-Variable an awk übergeben:
quelle
Eine alternative Möglichkeit besteht darin, die Shell die Variable
awk
über die fortlaufende Zuweisung (temporär) in die Umgebung einfügen zu lassen :Beachten Sie, dass das Zitieren von Variablen nicht erforderlich ist, wenn Zuweisungen in der Shell ausgeführt werden
quelle