データの2列目を取得するawkコマンドを取得できないようです。
バッシュコード:
filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)
printf "$filter_data \n"
$ filter変数は、シェルスクリプトに渡されるダウンロードまたはアップロードの値です。そのため、awkは「ダウンロード」または「アップロード」という用語を使用して適切な行を検索します。
ファイルの内容は次のとおりです。
Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s
51.13
と57.38
など、数値のみを取得し、他の何も取得しようとはしていません。
Awkの変数がシェルによって展開されないように、awkプログラム本体には一重引用符を使用する必要があります。 Shell変数をawkに渡す方法は次のとおりです。
filter_data=$( awk -v re="$filter:" '$0 ~ re {print $2}' scanresults_temp.txt )
別の方法は、シェルに割り当てを進めることで変数をawk
s環境に入れさせることです(一時的):
re=$filter awk '$0 ~ ENVIRON["re"] {print $2}' input.txt
シェルで割り当てを実行する場合、変数の引用は不要であることに注意してください