2013-10-09 34 views
2

我有一個可變(OUTPUT)含有查找圖案,然後將串後面的字符的可變

"Using pin #4 Data (40): 0x23 0x0 0x18 0x0 0x3b Temp = 24 *C, Hum = 35 %". 

兩者溫度可以爲0到100。

BASH如何找到string "Temp = " and "Hum = "然後將相關的數字(「24」和「35」)放在它們各自的變量TEMP和HUM中。

OUTPUT變量的長度可能發生變化,所以我無法根據它們在字符串中的位置找到TEMP和HUM變量。

萬分感謝

回答

3
$ OUTPUT="Using pin #4 Data (40): 0x23 0x0 0x18 0x0 0x3b Temp = 24 *C, Hum = 35 %" 
$ [[ "$OUTPUT" =~ Temp\ =\ ([0-9]*) ]] && TEMP=${BASH_REMATCH[1]} 
$ [[ "$OUTPUT" =~ Hum\ =\ ([0-9]*) ]] && HUM=${BASH_REMATCH[1]} 
$ echo $TEMP 
24 
$ echo $HUM 
35 
+0

得好好的,我第一次看到「BASH_REMATCH」,沒有太多關於它在互聯網上。非常感謝你 – Gregg

0

整潔的替代解決方案:

grep -oE " [0-9]+ " <<< $OUTPUT 
相關問題