gpt4 book ai didi

linux - 使用 sed 解析来自 tty 的流

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:04 24 4
gpt4 key购买 nike

我正在使用 cat 从/dev/ttyUSB0 输入读取数据。这是一个永远持续的文本流。

cat /dev/ttyUSB0

数据看起来像这样,每一行都以 002 开头并以 003 结尾(stx 和 etx)。所以文本看起来像这样:

/002{"xxxx": 12, "yyyy": "sendRegistration", "zzzz": 1}/003/002{"xxxx": 13, "yyyy": "keepAlive", "zzzz": 1}/003.....

我想使用 sed 将行更改为如下所示:

/002{"xxxx": 12, "yyyy": "sendRegistration", "zzzz": 1}
/002{"xxxx": 13, "yyyy": "keepAlive", "zzzz": 1}

我用换行符替换/003 的地方。

但是当我像这样使用 sed 语句时,我没有得到任何输出:

cat /dev/ttyUSB0 | sed -e 's/\003/\n/g'

最佳答案

Sed 逐行处理输入。它在完成接收该行时处理该行。而且(尽管有语言环境)我不知道有什么方法可以告诉 sed 使用换行符以外的东西来表示行的分隔。

我的解决方案是切换到支持使用备用记录分隔符功能的不同工具。 awk 似乎符合要求。

$ awk 'BEGIN{RS="\x03"} {print "> ",$0}' <<<$'one\003two\003three\003'
> one
> two
> three

所以我认为获得您想要的解决方案可能是:

$ awk 'BEGIN{RS="\x03"} 1' < /dev/ttyUSB0

关于linux - 使用 sed 解析来自 tty 的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42161921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com