我似乎无法使用 awk 命令来获取第二列数据。
重击代码:
filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)
printf "$filter_data \n"
Run Code Online (Sandbox Code Playgroud)
$filter 变量是传递到 shell 脚本的 Download 或 Upload 的值。所以 awk 使用术语下载或上传来搜索正确的行。
文件内容为:
Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s
Run Code Online (Sandbox Code Playgroud)
我试图只得到数字而不是其他任何东西,例如,51.13
和57.38
.
gle*_*man 13
您需要对 awk 程序主体使用单引号,这样 awk 的变量就不会被 shell 扩展。以下是将 shell 变量传递给 awk 的方法:
filter_data=$( awk -v re="$filter:" '$0 ~ re {print $2}' scanresults_temp.txt )
Run Code Online (Sandbox Code Playgroud)
另一种方法是让 shellawk
通过继续赋值(临时)将变量放入s 环境中:
re=$filter awk '$0 ~ ENVIRON["re"] {print $2}' input.txt
Run Code Online (Sandbox Code Playgroud)
请注意,在 shell 中执行赋值时不需要变量引用