AWK или SED, извлечение значений из строки

AWK или SED, извлечение значений из строки

Мне нужно извлечь несколько значений из строки (вывод из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

Связанный контент