如何从nmcli dev wifi列表中移除重复及空SSID?
如何移除nmcli扫描结果中的重复SSID及空SSID?
场景1:仅提取SSID列表(对应nmcli -f SSID dev wifi)
直接用管道组合工具过滤空SSID并去重:
nmcli -f SSID dev wifi | awk 'NR==1 || ($1 != "--")' | sort -u
awk部分保留表头,同时剔除内容为--的空SSID行sort -u自动完成排序和去重,最终输出就是你要的唯一非空SSID列表:
SSID V-ODT RTU240-156B fortinet
场景2:保留完整扫描信息(对应nmcli dev wifi list --rescan yes)
如果需要保留多列的完整信息,同时过滤空SSID并对每个SSID去重,推荐保留信号最强的条目(更实用):
nmcli dev wifi list --rescan yes | awk ' BEGIN { print $0 } NR>1 && $3 != "--" { if (!ssid[$3] || $7 > ssid[$3]["signal"]) { ssid[$3]["line"] = $0 ssid[$3]["signal"] = $7 } } END { for (i in ssid) print ssid[i]["line"] }' | column -t
- 先打印表头,然后遍历所有非空SSID行,用数组记录每个SSID的最高信号条目
- 最后输出所有唯一SSID的最强信号行,
column -t确保列对齐
如果只是简单去重(保留首次出现的非空SSID行),用这个更简洁的命令:
nmcli dev wifi list --rescan yes | awk 'NR==1 || ($3 != "--" && !seen[$3]++)' | column -t
内容的提问来源于stack exchange,提问作者01k02t
相关产品推荐
相关产品推荐

