Я не могу получить команду awk, чтобы получить второй столбец данных.
Код Bash:
filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)
printf "$filter_data \n"
Переменная $ filter - это либо значение Download, либо Upload, которое передается в сценарий оболочки. Так что awk использует термин «Download» или «Upload» для поиска нужной строки.
Содержимое файла:
Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s
Я пытаюсь получить только цифры, а не что-нибудь еще, например, 51.13
и 57.38
.
awk
«Sprintf
Ответы:
Вам нужно использовать одинарные кавычки для тела программы awk, чтобы переменные awk не раскрывались оболочкой. Вот как вы должны передать переменную оболочки в awk:
источник
Альтернативный способ - позволить оболочке поместить переменную в
awk
окружение с помощью продолжающегося присваивания (временного):Обратите внимание, что кавычки переменных не обязательны при выполнении назначений в оболочке
источник