我正试图从信息块中获取一个值。
我正在创建以下输出:
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变量中?
答案 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