用sed提取一行中的数字

时间:2016-06-21 11:19:45

标签: sed sh

我正试图从信息块中获取一个值。

我正在创建以下输出:

RSSI: -21
RSSI: -12
RSSI: -13
RSSI: -13
RSSI: -16
RSSI: -13

使用以下命令:

hcidump -a | egrep 'RSSI|bdaddr' | grep -A1 --no-group-separator 'bdaddr XX:XX:XX:XX:XX' | egrep 'RSSI' 

但我想只显示最后的值。 但我正在努力克服正确的模式,我在网上发现了许多提示,但没有一个可行的提示,例如:

sed 's/RSSI: //'

此外,我想知道我的命令在顶部是否有更顺畅的方式,因为它似乎每个|输出变慢,就像在输出值之前填充缓冲区一样。

PS:我想在C中使用带有system()函数的命令,是否有一个选项可以将值存储在C变量中?

3 个答案:

答案 0 :(得分:2)

无需sed,您可以使用cut

cut -d' ' -f2 myfile

这将仅输出第二列,将一个空格视为列分隔符。

编辑:要删除 myfile 中每行开头的空格,请先执行此操作:

sed -i 's/^ *//' myfile

答案 1 :(得分:2)

试一试

hcidump -a |.. whatever...:XX:XX'|grep -Po 'RSSI:\s+\K.*'

hcidump -a |.. whatever...:XX:XX'|awk '/RSSI/{print $2}'

答案 2 :(得分:0)

或者,如果中间有可变数量的空格,则可以使用以下内容:

rev myfile | cut -d' ' -f1 | rev