iw dev wlp3s0スキャンの出力を制限する方法は?

iw dev wlp3s0スキャンの出力を制限する方法は?

Arch Linuxの新規インストール時にワイヤレスネットワークを設定しようとしています。このコマンドは、iw dev wlp3s0 scan見つかったすべてのネットワークに関する情報を提供します。私のSSIDに関する情報が必要です。

答え1

ここには確認するWi-Fiはありませんが、iw dev IFACE scan各セクションはインデントされていない行で始まり、その後のすべての行はインデントされていると思います。したがって、インデントされていない行を区切りとして扱うことができます。

これは通常のコマンドでは解析するのが簡単ではないため、2つのステップで実行できます。セッション間に空行を挿入することから始めます。次に、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;
}'

関連情報