使用AWK获得第二列


9

我似乎无法获得awk命令来获取第二列数据。

重击代码:

filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)

printf  "$filter_data \n"

$ filter变量是传递到Shell脚本中的Download或Upload的值。因此,awk使用术语“下载”或“上传”来搜索正确的行。

文件内容为:

Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s

我正在尝试仅获取数字,而没有其他任何信息,例如51.1357.38


2
如果立即打印,为什么还要将其保存为变量?只要使用awkprintf
谢尔盖Kolodyazhnyy

Answers:


13

您需要对awk程序主体使用单引号,以便awk的变量不会被shell扩展。这是将shell变量传递给awk的方法:

filter_data=$( awk -v re="$filter:" '$0 ~ re {print $2}' scanresults_temp.txt )

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.