我正在使用 Ubuntu 获取 BLE 设备的输出,在终端中我得到了连续的值流。唯一的问题是它们前面有一个无用的字符串(我正在读取 BLE 设备的特性,因此它们有一个“通知句柄 = 0x000c 值:FF FF”)。我只需要末尾的十六进制字符串作为我的数据。
目前,我使用脚本记录终端输出窗口,然后从创建的文本文件中提取十六进制值并将其转换为电压,然后绘制图表。但是,我必须实际执行这两个命令,因此我实际上是截取数据的屏幕截图。
我想知道是否有某种方法可以只将十六进制值写入 .dat 文件并对其进行操作,因为这样我就可以实时绘制数据了。如果你们知道任何其他获取实时数据图表的方法,请告诉我。
答案1
您可以尝试以下几种方法:
yourcommand | sed 's/.*: //' > file.dat
yourcommand | cut -d: -f2 > file.dat
yourcommand | awk -F: '{print $2}' > file.dat
yourcommand | grep -Eo '[[:xdigit:]]{2} [[:xdigit:]]{2}$' > file.dat
答案2
您可以通过 awk 管道传输每行输出,如下所示:
echo "Notification handle = 0x000c value: FF FF" | awk '{print $6, $7}'
这将导致以下输出:
FF FF
另一个管道可以让你通过附加将其放入文件中
echo "Notification handle = 0x000c value: FF FF" | awk '{print $6, $7}' | tee -a values.dat
这样你就会有一文件,其中每行总是包含一个两字节的十六进制值,然后你可以继续下一步。