在awk中读取行并使用$line时

在awk中读取行并使用$line时,awk,while-loop,readline,Awk,While Loop,Readline,这是我的档案 air1.txt fc:75:16:d2:91:a3 -90 targol 78:54:2e:7f:e8:9e -88 DLink fc:75:16:d2:91:a3 -89 targol 78:54:2e:7f:e8:9e -89 DLink 78:54:2e:7f:e8:9e -88 DLink 78:54:2e:7f:e8:9e -87 DLink fc:75:16:d2:91:a3 -90 targol 我想计算第三列中每个名字第二列的平均值!

这是我的档案

air1.txt

fc:75:16:d2:91:a3   -90 targol
78:54:2e:7f:e8:9e   -88 DLink
fc:75:16:d2:91:a3   -89 targol
78:54:2e:7f:e8:9e   -89 DLink
78:54:2e:7f:e8:9e   -88 DLink
78:54:2e:7f:e8:9e   -87 DLink
fc:75:16:d2:91:a3   -90 targol
我想计算第三列中每个名字第二列的平均值!这是我的纸条

RSSI=$(awk '{print $3}' air1.txt | sort -u | while read line; do awk < air1.txt '{print $2,$3}' | grep $line | ./rssiMean.sh |cut -d'.' -f1 |awk '{print $line,$1}' ;done)
echo $RSSI
为什么我无法获得
$line
?! 顺便说一句。/rssiMean.sh计算平均值

这应该可以:

awk '{a[$3]+=$2;b[$3]++} END {for (i in a) print i,a[i]/b[i]}' air1.txt
DLink -88
targol -89.6667
它将第3列中每个数据的数字相加,然后除以点击数。

这应该是:

awk '{a[$3]+=$2;b[$3]++} END {for (i in a) print i,a[i]/b[i]}' air1.txt
DLink -88
targol -89.6667
它将第3列中每个数据的数字相加,然后除以点击数。

这应该是:

awk '{a[$3]+=$2;b[$3]++} END {for (i in a) print i,a[i]/b[i]}' air1.txt
DLink -88
targol -89.6667
它将第3列中每个数据的数字相加,然后除以点击数。

这应该是:

awk '{a[$3]+=$2;b[$3]++} END {for (i in a) print i,a[i]/b[i]}' air1.txt
DLink -88
targol -89.6667

它将列#3中每个数据的数量相加,然后除以命中数。

您不能在
awk
脚本中使用bash变量

而是使用awk变量并使用
-v
参数赋值

例如:

这里的
awkvar
是一个awk变量,创建并传递值为
$var

在脚本中进行此更改

RSSI=$(awk '{print $3}' air1.txt | sort -u | while read line; do awk < air1.txt '{print $2,$3}' | grep $line | ./rssiMean.sh |cut -d'.' -f1  |awk -v line=$line '{print line,$1}' ;done)
echo $RSSI
RSSI=$(awk'{print$3}'air1.txt | sort-u |读行;do awk
所做的更改是

awk-v line=$line'{print line,$1}


awk varible
line
被赋予bash varible
$line
的值,您不能在
awk
脚本中使用bash变量

而是使用awk变量并使用
-v
参数赋值

例如:

这里的
awkvar
是一个awk变量,创建并传递值为
$var

在脚本中进行此更改

RSSI=$(awk '{print $3}' air1.txt | sort -u | while read line; do awk < air1.txt '{print $2,$3}' | grep $line | ./rssiMean.sh |cut -d'.' -f1  |awk -v line=$line '{print line,$1}' ;done)
echo $RSSI
RSSI=$(awk'{print$3}'air1.txt | sort-u |读行;do awk
所做的更改是

awk-v line=$line'{print line,$1}


awk varible
line
被赋予bash varible
$line
的值,您不能在
awk
脚本中使用bash变量

而是使用awk变量并使用
-v
参数赋值

例如:

这里的
awkvar
是一个awk变量,创建并传递值为
$var

在脚本中进行此更改

RSSI=$(awk '{print $3}' air1.txt | sort -u | while read line; do awk < air1.txt '{print $2,$3}' | grep $line | ./rssiMean.sh |cut -d'.' -f1  |awk -v line=$line '{print line,$1}' ;done)
echo $RSSI
RSSI=$(awk'{print$3}'air1.txt | sort-u |读行;do awk
所做的更改是

awk-v line=$line'{print line,$1}


awk varible
line
被赋予bash varible
$line
的值,您不能在
awk
脚本中使用bash变量

而是使用awk变量并使用
-v
参数赋值

例如:

这里的
awkvar
是一个awk变量,创建并传递值为
$var

在脚本中进行此更改

RSSI=$(awk '{print $3}' air1.txt | sort -u | while read line; do awk < air1.txt '{print $2,$3}' | grep $line | ./rssiMean.sh |cut -d'.' -f1  |awk -v line=$line '{print line,$1}' ;done)
echo $RSSI
RSSI=$(awk'{print$3}'air1.txt | sort-u |读行;do awk
所做的更改是

awk-v line=$line'{print line,$1}



awk varible
line
被分配了bash varible
$line

的值,但是如果你想取该列的平均值,我建议你使用Jotne的答案,但是如果你想取该列的平均值,我建议你使用Jotne的答案,但是如果你想取该列的平均值,我建议你使用Jotne的答案为了计算该专栏的平均值,我建议Jotne的答案这是我以前从未见过的
awk
。你想在这里干什么。它的普通
awk'code'文件
这个
awk
是我以前没有见过的东西。你想在这里干什么。它的普通
awk'code'文件
这个
awk
是我以前没有见过的东西。你想在这里干什么。它的普通
awk'code'文件
这个
awk
是我以前没有见过的东西。你想在这里干什么。它的正常
awk'code'文件
如果还想根据第三列对数据进行排序,我该怎么办?@sgh只需将它管道化到
sort
,它将根据路由类型进行排序:
awk'{a[$3]+=$2;b[$3]+}END{for(I in a)print I,a[I]/b[I]}'air1.txt | sort
谢谢!它帮助了我!如果我还想根据第三列对数据进行排序,我该怎么办?@sgh只需将其输送到
sort
,它将根据路由类型进行排序:
awk'{a[$3]+=$2;b[$3]+}END{for(I in a)print I,a[I]/b[I]}'air1.txt | sort
谢谢!它帮助了我!如果我还想根据第三列对数据进行排序,我该怎么办?@sgh只需将其输送到
sort
,它将根据路由类型进行排序:
awk'{a[$3]+=$2;b[$3]+}END{for(I in a)print I,a[I]/b[I]}'air1.txt | sort
谢谢!它帮助了我!如果我还想根据第三列对数据进行排序,我该怎么办?@sgh只需将其输送到
sort
,它将根据路由类型进行排序:
awk'{a[$3]+=$2;b[$3]+}END{for(I in a)print I,a[I]/b[I]}'air1.txt | sort
谢谢!它帮助了我!