Je n'arrive pas à obtenir la commande awk pour obtenir la deuxième colonne de données.
Code Bash:
filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)
printf "$filter_data \n"
La variable $ filter est la valeur de Download ou Upload qui est transmise au script Shell. Donc, awk utilise le terme Télécharger ou Télécharger pour rechercher la ligne appropriée.
Le contenu du fichier est:
Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s
J'essaie d'obtenir uniquement les chiffres et rien d'autre, par exemple, 51.13
et 57.38
.
Vous devez utiliser des guillemets simples pour le corps du programme awk afin que les variables de awk ne soient pas développées par le shell. Voici comment vous devriez passer une variable Shell dans awk:
filter_data=$( awk -v re="$filter:" '$0 ~ re {print $2}' scanresults_temp.txt )
Une autre façon de faire consiste à laisser Shell mettre la variable dans l'environnement awk
s via une affectation continue (temporaire):
re=$filter awk '$0 ~ ENVIRON["re"] {print $2}' input.txt
Notez que les guillemets variables ne sont pas nécessaires lorsque vous effectuez des affectations dans Shell