Não consigo obter o comando awk para obter a segunda coluna de dados.
Código Bash:
filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)
printf "$filter_data \n"
A variável $ filter é o valor de Download ou Upload que é passado para o script de shell. O awk usa o termo Download ou Upload para procurar a linha correta.
O conteúdo do arquivo é:
Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s
Estou tentando obter apenas os números e nada mais, ex 51.13
e 57.38
.
awk
'sprintf
Respostas:
Você precisa usar aspas simples para o corpo do programa awk, para que as variáveis do awk não sejam expandidas pelo shell. Aqui está como você deve passar uma variável de shell para o awk:
fonte
Uma maneira alternativa é permitir que o shell coloque variáveis no
awk
ambiente através da atribuição de procedimento (temporário):Observe que a citação de variáveis não é necessária ao executar atribuições no shell
fonte