Nie mogę uzyskać polecenia awk, aby uzyskać drugą kolumnę danych.
Kod Bash:
filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)
printf "$filter_data \n"
Zmienna $ filter jest wartością parametru Download lub Upload, która jest przekazywana do skryptu powłoki. Tak więc awk używa terminu Pobierz lub Prześlij, aby wyszukać odpowiedni wiersz.
Zawartość pliku to:
Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s
Próbuję dostać tylko numery, a nie cokolwiek innego, EX, 51.13
oraz 57.38
.
awk
'sprintf
Odpowiedzi:
Musisz użyć pojedynczych cudzysłowów dla treści programu awk, aby zmienne awk nie były rozwijane przez powłokę. Oto jak powinieneś przekazać zmienną powłoki do awk:
źródło
Alternatywnym sposobem jest pozwolenie powłoce na umieszczenie zmiennej w
awk
środowisku s poprzez kontynuowanie przypisania (tymczasowe):Zauważ, że cytowanie zmiennych nie jest konieczne podczas wykonywania przypisań w powłoce
źródło