如何限制 iw dev wlp3s0 扫描的输出?

如何限制 iw dev wlp3s0 扫描的输出?

我正在尝试在新安装的 Arch Linux 上配置无线网络。该命令iw dev wlp3s0 scan提供有关所有找到的网络的信息。我只需要有关我的 SSID 的信息。

答案1

我这里没有 wifi 可供检查,但我相信iw dev IFACE scan每个部分都以非缩进的行开始,并缩进所有后续行。因此,您可以将非缩进行视为分节符。

这用通常的命令解析起来不太容易,所以你可以分两步完成。首先在会话之间插入一个空行。然后使用awk的段落模式。

iw dev wlp3s0 scan | 
sed 's/^[^ \t]/\n&/' |
awk -v RS= '/^[ \t]*SSID: myssid$/'

请注意正确引用 SSID 中的任何特殊字符。如果您将其作为变量传递并且需要安全地处理特殊字符,则需要做更多的工作。

iw dev wlp3s0 scan | 
sed 's/^[^ \t]/\n&/' |
awk -v RS= -v target="$ssid" '{
    ssid = substr($0, index($0, "\tSSID:"));
    ssid = substr(ssid, 1, index(ssid, "\n"));
    if (ssid == target) print;
}'

相关内容