我使用以下命令从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
答案 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
使用cat
将fg
- 命令置于前台,然后使用CTRL-c
终止该命令
然后再次删除fifo rm logFifo