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 passée dans le script shell. Ainsi, 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 seulement les chiffres et rien d'autre, ex 51.13
et 57.38
.
awk
'sprintf
Réponses:
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 passer une variable shell dans awk:
la source
Une autre méthode consiste à laisser le shell mettre des variables dans l'
awk
environnement s via une affectation de procédure (temporaire):Notez que la citation de variable n'est pas nécessaire lors de l'exécution des affectations dans le shell
la source