bonjour
j'ai un appareil sur ttyS0 en 115200 8b 1stop qui émet des distances sous la forme :
12.25^M
13.89^M
14.89^M
15.89^M
25.87^M
mon script :
cat /dev/ttySO | dos2unix -l | gawk '{print strftime ("%F %T", -bash;}'
cela a fonctionné correctement :( quelques temps résultat attendu :
2013-05-22 12:45:26 12.25
2013-05-22 12:45:26 13.89
…
lorsque j'ai sauvegardé le script pour le retrouver plus tard avec la commande :
echo " cat /dev/ttySO | dos2unix -l | gawk '{print strftime ("%F %T"), -bash;}' " > log.sh
la commande dans log.sh ne fonctionnais plus, la commande ci dessus est celle sauvegardé pas la réelle.
le nouveau résultat est :
2013-05-22 12:45:26 0
2013-05-22 12:45:26 0
…
j'arrive a refaire fonctionner le traitement avec : gawk '{print strftime ("%F %T"); print ;}' MAIS
le résultat est :
2013-05-22 12:45:26
12.25
je peux faire un post traitement sans souci, mais je préférerais m'en passer. Une idée ?
# j'ai trouvé
Posté par Anonyme . Évalué à 2. Dernière modification le 23 mai 2013 à 11:48.
honte a moi, un simple $1 correctement placé resoud tout mes problèmes
gawk '{print strftime ("%F %T "$1) ;}'
par contre cela en rajoute un petit, cela utilise un buffer, ce n'est plus au fil de l'eau. je perd des données.
[^] # Re: j'ai trouvé
Posté par NeoX . Évalué à 2.
pourquoi
gawk
plutot auawk
?je dis ca, j'ai pas été voir quelle etait la difference entre les deux.
[^] # Re: j'ai trouvé
Posté par anaseto . Évalué à 2.
Probablement aucune sous linux. Chez moi awk est un lien symbolique vers gawk. Sur les BSD (OpenBSD en tous cas) par contre c'est bien un autre awk (je crois issue du code de Kernighan, un des créateurs d'awk), et il a pas mal de fonctionnalités en moins (pas de backreferences dans les regexp par exemple je crois).
[^] # Re: j'ai trouvé
Posté par Anonyme . Évalué à 2.
Awk n a pas strftime, seule gawk possede l option
[^] # Re: j'ai trouvé
Posté par Benoît Ganne (site web personnel) . Évalué à 3.
Je pense que ton script original c'est :
~# cat /dev/ttyS0 | dos2unix -l | gawk '{print strftime("%F %T"), $1;}'
Mais quand tu as fait ton "echo" pour le sauvegarder, bash a interprété le '$1' (d'où le -bash).
Lapin compris.
[^] # Re: j'ai trouvé
Posté par Anonyme . Évalué à 1. Dernière modification le 23 mai 2013 à 20:05.
J ai des pauses dans le flux serie au niveau de awk, pendant ces pause les donnee arrive toujours et ne sont pas traite, bravo ! Pour avoir trouve d ou venait la modif, merci
[^] # Re: j'ai trouvé
Posté par gaaaaaAab . Évalué à 3.
s/<1>/<0>/g/
argv[0] est le nom du programme lancé (donc pour le bash, c'est "bash" dans la variable $0), et pour awk, $0 représente toute la ligne (tandis que $1 représente le premier champs). Comme il n'y a qu'un seul champs par ligne, $0 et $1 sont équivalents pour awk, mais pas pour le shell !
# simplifions nous la vie
Posté par NeoX . Évalué à 3.
ton
doit pouvoir s'ecrire
[^] # Re: simplifions nous la vie
Posté par Benoît Ganne (site web personnel) . Évalué à 3.
Non, parce que dans son cas il remplace les CRLF par des LF (fin de ligne DOS -> fin de ligne UNIX).
Donc c'est pas tout à fait équivalent.
Par contre je soupçonne que
~# gawk -vRS='\r\n' '{print strftime ("%F %T"), $1;}' /dev/ttyS0
fonctionne.
[^] # Re: simplifions nous la vie
Posté par NeoX . Évalué à 4.
en effet, j'avais oublié le dos2unix pour changer le retour chariot, et je supposais bien qu'il y avait une option à awk/gawk pour faire ca à la volée.
on elimine alors les 2 pipes, ce qui est plus efficace.
[^] # Re: simplifions nous la vie
Posté par Anonyme . Évalué à 1.
J essaye demain, merci
[^] # Re: simplifions nous la vie
Posté par Anonyme . Évalué à 3.
étonnamment :
gawk -vRS='\r\n' '{print strftime ("%F %T"), $1;}' /dev/ttyS0
ne fonctionne pas, comme si gawk ne voyait qu'une ligne sans séparateur dans les log du port série mais :
gawk '{print strftime ("%F %T"), $1;}' /dev/ttyS0
fonctionne. Du coup je n'ai plus qu'un seul processus, merci !
[^] # Re: simplifions nous la vie
Posté par NeoX . Évalué à 4.
parce que gawk doit savoir interpreter le ^M comme etant le retour à la ligne
et peut donc traiter l'information
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.