在字符串中查找模式,然后将字符串后面的字符放在变量中

时间:2013-10-09 05:21:29

标签: linux bash shell scripting

我有一个变量(OUTPUT),其中包含

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

Temp Hum 都可以是0到100。

BASH 中如何找到string "Temp = " and "Hum = ",然后将相关数字(“24”和“35”)放在各自的变量TEMP和HUM中。

OUTPUT变量的长度可以改变,因此我无法根据它们在字符串中的位置找到TEMP和HUM变量。

万分感谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

整洁的替代解决方案:

grep -oE " [0-9]+ " <<< $OUTPUT