在bash上从二进制文件中删除菱形问号

时间:2014-06-13 17:23:56

标签: linux bash

我动态地将文件写入串口的输入,如下所示: sudo cu -s 19200 -l / dev / ttyUSB0> serialContent.json

但是当我打开它时,它会向我显示很多钻石问号:

  

*#* 1 ## * 1 * 0 * 702442501#9 ## * 1 * 0 * 702442501 #9 ##

我想得的只是这一部分:*#* 1 ## * 1 * 0 * 702442501#9 ## * 1 * 0 * 702442501#9 ##

当我用vim打开文件时,我得到了很多^ @字符。

我尝试使用sed' s | [^ @] || g'来替换字符。 serialContent.json> serialContent2.json和sed' s | [�] || g' serialContent.json> serialContent2.json没有运气。

这是我用这个命令得到的:

$ file -bi serialContent.json
application/octet-stream; charset=binary

如何删除这些标记?谢谢!

1 个答案:

答案 0 :(得分:7)

这是您拥有不可打印数据时显示的replacement character

要删除所有不可打印的字符,您可以通过tr -cd '[:print:]'

进行管道传输
sudo cu -s 19200 -l /dev/ttyUSB0 | tr -cd '[:print:]' > serialContent.json

什么是可打印的取决于您的区域设置。您可能首先要export LC_ALL=C以确保跨机器的结果一致。