2015-10-06 10 views
0

Я использую следующую команду, чтобы регистрировать данные из Миника (последовательный порт) с отметкой времени:Как избавиться от странных символов в выходе миникомпании?

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

Те «странные символы» - это escape-последовательности движений курсора в вашем случае.

см 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 -command на передний план с fg, а затем прекратить его действие с CTRL-c затем просто удалить fifo rm logFifo