2015-10-06 1 views
0

J'utilise la commande suivante pour enregistrer les données de Minicom (port série) avec horodatage:Comment se débarrasser des caractères étranges dans la sortie de la 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 

Les données enregistrées dans le fichier out.txt est:

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 

Je chose que la caractères étranges « [20, 47H [21, 1 H » sont le retour de chariot et la longueur de la ligne, je veux la sortie à enregistrer sur le out.txt comme dans les domaines suivants:

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 

Répondre

0

les Les "caractères étranges" sont des séquences d'échappement du mouvement du curseur dans votre cas.

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

Ils sont présentés parce que vous redirigeant la sortie qui devrait aller à votre terminal.

Si ces caractères ne vous intéressent pas, vous pouvez utiliser le paramètre --capturefile.

Pour ajouter une date, j'utiliserais un 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 

Je viens de modifier le format de date que je l'utilise

Pour vous arrêter besoin de quitter minicom obtenir le cat -command au premier plan avec fg puis terminer par CTRL-c puis retirez simplement la fifo nouveau rm logFifo