如何摆脱minicom输出中的奇怪字符?

时间:2015-10-06 13:20:16

标签: serial-port timestamp special-characters tee

我使用以下命令从minicom(串行端口)记录带有时间戳的数据:

minicom -D /dev/ttyUSB0 -b 9600 | ( while read line; do echo "$(date +%Y%m%d:%H%M%S), ${line}"; done )| tee -a out.txt

out.txt文件中记录的数据是:

20151006:145139, [20;47H [21;1H1 some data
20151006:145140, [20;47H [21;1H2 some data
20151006:145141, [20;47H [21;1H3 some data
20151006:145142, [20;47H [21;1H4 some data
20151006:145143, [20;47H [21;1H5 some data
20151006:145144, [20;47H [21;1H6 some data

我认为奇怪的字符" [20; 47H [21; 1H"是回车符和行长度,我希望输出保存在out.txt中,如下所示:

20151006:145139, 1 some data
20151006:145140, 2 some data
20151006:145141, 3 some data
20151006:145142, 4 some data
20151006:145143, 5 some data
20151006:145144, 6 some data

1 个答案:

答案 0 :(得分:0)

在你的情况下,那些“奇怪的字符”是光标移动转义序列。

http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html
要么 http://wiki.bash-hackers.org/scripting/terminalcodes

显示它们是因为您正在输出应该到达终端的输出。

如果您对这些字符不感兴趣,可能需要使用--capturefile参数。

要预先设定日期,我会使用fifo。

mkfifo logFifo
cat logFifo | while read line; do echo "$(date +%Y%m%d_%T.%N) | ${line}"; done >> out.txt &
minicom -D /dev/ttyUSB0 -b 9600 --capturefile logFifo

我刚刚更改了使用它的日期格式

要停止,您需要退出minicom使用catfg - 命令置于前台,然后使用CTRL-c终止该命令 然后再次删除fifo rm logFifo