AWK または SED、文字列から値を取得する

AWK または SED、文字列から値を取得する

文字列からいくつかの値を取得する必要があります(出力からiwconfig wlan0 | grep -i 品質)。

Link Quality=37/100  Signal level=57/100  Noise level=0/100

私は37からリンク品質=37/10057から信号レベル=57/100そして0から騒音レベル=0/100同じコマンドである必要はありません。私がやろうとしているのは、mosquitto_pub を使用してそれらの値を MQTT サーバーに投稿することです。

ご協力いただければ幸いです。

答え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' の前に来ると仮定すると、'/100' が続く 'some number' を grep し、すべてを '/' まで切り取ることができます。

grep -o '[0-9][0-9]*\/100' your_file | cut -d/ -f1

出力は次のようになります。

37
57
0

関連情報