Мне нужно извлечь несколько значений из строки (вывод изiwconfig wlan0 | grep -i качество).
Link Quality=37/100 Signal level=57/100 Noise level=0/100
мне нужно37отКачество ссылки=37/100,57отУровень сигнала=57/100и0отУровень шума=0/100. Это не обязательно должно быть в той же команде. Я пытаюсь отправить эти значения на сервер MQTT с помощью mosquitto_pub.
Любая помощь будет оценена по достоинству.
решение1
$ iwconfig wlan0 | awk -F'[=/]' 'tolower($0) ~ /quality/{print $2, $4, $6}' file
37 57 0
решение2
С помощью GNU grep:
iwconfig wlan0 | grep -i quality | grep -oP '\d+(?=/)'
который выводит
37
57
0
решение3
Предполагая, что интересующие вас числа всегда идут перед «/100», вы можете выполнить grep по запросу «some number», за которым следует «/100», а затем вырезать все до символа «/»:
grep -o '[0-9][0-9]*\/100' your_file | cut -d/ -f1
Это дает результат:
37
57
0