Estou tentando processar a saída do comando nmcli (valores separados por dois pontos), mas não consigo manipular / ignorar dois-pontos com escape no MAC ou no BSSID. Eu tentei awk, jq, sed, regex, mas simplesmente não entendi ...
comando canalizado:
nmcli -f SSID,BSSID,CHAN,FREQ,SIGNAL,SECURITY -t dev wifi
Exemplo de saída
:
WiFi:00\:0A\:97\:6F\:7B\:AC:165:5660 MHz:15:
Se eu mover o BSSID para o final da lista da linha / campo (e depois cortar o último campo) ele funcionará, mas agora é uma questão de orgulho. Por favor ajude!
Eu encontrei este thread stackoverflow existente, o que realmente aconteceu muito bem, mas estou ultimamente encontrando o mesmo problema de como ignorar os dois-pontos escapados no endereço MAC! @% $:
pares de valores separados por dois pontos
Tentativa mais recente (legível):
printf '%s' "$(nmcli -f SSID,BSSID,CHAN,FREQ,SIGNAL,SECURITY -t dev wifi)" | jq -sR 'split("\n") | map(split(":")) | map({"SSID": .[0], "BSSID": .[1], "CHAN": .[2], "RATE": .[3], "FREQ": .[4], "SIGNAL": .[5], "SECURITY": .[6]})'
e saída do problema:
...
{
"SSID": "WiFi",
"BSSID": "00\",
"CHAN": "0A\",
"RATE": "97\",
"FREQ": "6F\",
"SIGNAL": "7B\",
"SECURITY": "AC"
},
...
Também precisaria que o JQ deixasse o cólon no lugar e não escapasse como mostrado acima, se possível, ... por favor não diga apenas python ...