Bash 正在分析iw wlan0站转储输出

Bash 正在分析iw wlan0站转储输出,bash,parsing,awk,Bash,Parsing,Awk,我知道这是一个类似的问题,从其他职位。但是我想解析iw wlan站点转储,并将最强站点信号的Mac地址保存到文本文件中,或者用python将其作为变量 比较具有不同信号的多个站点,数字越低表示最强。我需要比较来自多个站点的信号,并选择最强信号的mac地址,例如-55 vs-60 # awk '/Station/{val=$2;next} /signal/{sub(/^ +/,"");print "MAC Address: "val ORS $0;val=""}' MAC Address: a8

我知道这是一个类似的问题,从其他职位。但是我想解析iw wlan站点转储,并将最强站点信号的Mac地址保存到文本文件中,或者用python将其作为变量

比较具有不同信号的多个站点,数字越低表示最强。我需要比较来自多个站点的信号,并选择最强信号的mac地址,例如-55 vs-60

# awk '/Station/{val=$2;next} /signal/{sub(/^ +/,"");print "MAC Address: "val ORS $0;val=""}'

MAC Address: a8:83:02:cf:3d:e2
        signal:         -60 [-60] dBm
MAC Address: f4:60:e2:e2:2f:2e
        signal:         -55 [-55] dBm
从这里我想得到最低的数字。只需打印1个站点mac地址

-

所选信号的最新代码结果与mac地址不匹配

# iw dev wlan0 station dump | grep -E 'Station|signal' //Reference
Station a8:8e:08:cf:1d:e9 (on wlan0)    <-------
        signal:         -28 [-28] dBm
Station f4:20:e2:a8:3f:3e (on wlan0)
        signal:         -55 [-55] dBm
# sudo iw dev wlan0 station dump | awk //Command
MAC Address: f4:20:e2:a8:3f:3e          <-------
        signal:         -27 [-28] dBm

EDIT5:由于您没有告诉我mac地址可以在字符串station之后或字符串mac地址之后找到,所以我以前的代码只查找station string,现在我添加了逻辑来检查两者。考虑到这一点,你能不能在你的帖子中用代码标签发布sudo iw wlan0 station dump的输出,然后让我们知道?嗨@RavinderSingh13我刚刚发布了结果。谢谢,我在输出中没有看到频率信号加密字符串,那么如果这些字符串不在输出中,您的代码将如何工作?请告诉我您对输出中的哪个字段及其名称感兴趣?例如-->发送数据包etci试图仅获取电台和信号。请不要介意频率等。。我不知道如何显示带有信号的站点mac地址。注释不用于扩展讨论;这段对话已经结束。
awk '
/Station/{
  if(value){
    b[count]=value
  }
  a[++count]=$2
  value=""
  next
}
/MAC Address/{
  if(value){
    b[count]=value
  }
  a[++count]=$NF
  value=""
  next
}
/signal/{
  sub(/^ +/,"")
  value=sig_value<$2?$0:prev?prev:$0
  sig_value=$2
  prev=$0
}
END{
  if(value){
    b[count]=value
  }
  for(i=1;i<=count;i++){
     split(b[i],array,"[[:space:]]+")
     max=max==""?array[2]:max
     ip_max=max>array[2]?ip_max:a[i]
     max=max>=array[2]?max:array[2]
     va[max]=max>=array[2]?va[max]?va[max]:b[i]:b[i]
  }
  print "MAC Address: "ip_max ORS va[max]
}'   Input_file
awk '
/Station/{
  if(value){
    b[count]=value
  }
  a[++count]=$2
  value=""
  next
}
/signal/{
  sub(/^ +/,"")
  value=sig_value<$2?$0:prev?prev:$0
  sig_value=$2
  prev=$0
}
END{
  if(value){
    b[count]=value
  }
  for(i=1;i<=count;i++){
     split(b[i],array,"[[:space:]]+")
     max=max==""?array[2]:max
     ip_max=max>array[2]?ip_max:a[i]
     max=max>=array[2]?max:array[2]
     va[max]=max>=array[2]?va[max]?va[max]:b[i]:b[i]
  }
  print "MAC Address: "ip_max ORS va[max]
}'  Input_file
awk '
/Station/{
  if(value){
    b[count]=value
  }
  a[++count]=$2
  value=""
  next
}
/signal/{
  sub(/^ +/,"")
  value=sig_value>$2?$0:prev?prev:$0
  sig_value=$2
  prev=$0
}
END{
  if(value){
    b[count]=value
  }
  for(i=1;i<=count;i++){
    split(b[i],array,"[[:space:]]+")
    ip_max=max<array[2]?ip_max:a[i]
    max=max<array[2]?max?max:array[2]:array[2]
    va[max]=b[i]
  }
  print "MAC Address: "ip_max ORS va[max]
}'   Input_file
awk '
/Station/{
  if(val && value){
    print "MAC Address: "val ORS value
    val=value=""
  }
  val=$2
  next
}
/signal/{
  sub(/^ +/,"")
  value=sig_value>$2?$0:prev?prev:$0
  sig_value=$2
  prev=$0
}
END{
  print "MAC Address: "val ORS value
}'   Input_file
awk '
/Station/{
  val=$2
  next
}
/signal/{
  sub(/^ +/,"")
  value=sig_value>$2?$0:prev?prev:$0
  sig_value=$2
  prev=$0
}
END{
  print "MAC Address: "val ORS value
}'   Input_file
awk '/Station/{val=$2;next} /signal/{sub(/^ +/,"");print "MAC Address: "val ORS $0;val=""}'  Input_file