Sortie de la command 'watch' en tant que list

Je veux faire un calcul simple du nombre de lignes par minute ajouté à un file journal.

Je veux aussi stocker le count pour chaque seconde.

Ce dont j'ai besoin est la sortie de la command suivante sous la forme d'une list qui sera mise à jour toutes les secondes:

watch -n1 'wc -l my.log' 

Comment sortir la 'mise à jour' de la command 'watch' sous forme de list?

Vous pouvez utiliser le commutateur -t pour watch ce qui provoque l'printing de l'en-tête. Cependant, cela va encore effacer l'écran afin que vous puissiez être mieux avec une simple boucle de shell:

 while sleep 1; do wc -l my.log done 

L'un des avantages est que vous pouvez facilement append d'autres commands (par exemple, la date ) et / ou canaliser la sortie via sed pour le reformater. Par ailleurs, si vous permutez sleep 1 avec wc dans la boucle, il se terminera automatiquement sur les erreurs.

Une vieille question, mais je viens de find une réponse très facile:

 watch -n1 'wc -l my.log | tee -a statistics.log' 

Cela va exécuter votre wc chaque seconde, append sa sortie au file statistics.log, et aussi le montrer sur l'écran.
Ainsi, vous vous refindez avec un file rempli de numbers représentant le nombre de lignes successives de my.log .

Que diriez-vous

 tail -f file.log | pv -rl > /dev/null 

Essayez ce qui suit:

 watch -n1 'wc -l my.log >> statistics.log' 

Vous pouvez créer un script qui le fait pour vous. J'ai appelé le mien keep (comme, continuez à le faire) et mettez-le sur le path de la bin .

Ceci est mon script:

 #!/bin/bash echo "Repeating command $* every second" while sleep 1; do "$@" done