No es necesario canalizar a grep y luego a awk en la primera línea, ya que awk puede hacer lo que sea necesario por sí mismo. También en la forma en que se escribió la primera línea, falta el $(...) en los comandos.
En la segunda línea le falta el separador de campo en el comando awk , que en un archivo .csv normalmente es una coma. Así que agregué eso al comando awk .
Use las siguientes dos líneas:
myBSSID="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | awk '/BSSID/{print $2}')"
awk -F ',' -v theBSSID="$myBSSID" '$1 == theBSSID {print $2}' "$HOME/Desktop/APtable.csv"
Noté que la salida del comando airport no reportó el BSSID correctamente, ya que si se omiten algunos ceros.
Si ese es el caso de su sistema y el archivo .cvs tiene la información adecuada, intente lo siguiente:
myBSSID="$(system_profiler SPAirPortDataType | awk '/BSSID/{print $2}')"
awk -F ',' -v theBSSID="$myBSSID" '$1 == theBSSID {print $2}' "$HOME/Desktop/APtable.csv"
Tenga en cuenta que system_profiler SPAirPortDataType no es tan rápido como usar airport pero si la salida de airport está eliminando algunos de los ceros, entonces necesitará una alternativa si el BSSID está en el% El archivo .cvs tiene los 12 caracteres, sin contar los dos puntos, lo que debería.
Lo siguiente podría usarse para incorporar ambos métodos en un script bash para usar solo el segundo método si la longitud de myBSSID es menos de 17 caracteres, ya que 17 es el longitud correcta.
#!/bin/bash
myBSSID="$(/S*/L*/P*/A*/V*/A/R*/airport -I | awk '/BSSID/{print $2}')"
l="${#myBSSID}"
if [[ $l -lt 17 ]]; then
myBSSID="$(system_profiler SPAirPortDataType | awk '/BSSID/{print $2}')"
fi
awk -F ',' -v theBSSID="$myBSSID" '$1 == theBSSID {print $2}' "$HOME/Desktop/APtable.csv"