2009-12-07 16 views
1

J'ai besoin de créer un graphique avec des valeurs numériques dans une période de temps, les valeurs représentent les utilisateurs en ligne dans une page Web.créer des graphiques avec un script shell

le script sera exécuté avec cron toutes les 30 minutes et le fichier html nécessaire sera téléchargé avec wget. mais il y a encore quelques questions sans réponse & problèmes:

-i besoin d'obtenir juste la valeur numérique du code HTML (mais grep renvoie toute la ligne), comment puis-je obtenir seulement la valeur numérique? Je peux obtenir la ligne avec grep, il ressemble à ceci:

      Users online: 24 917     </div> 

Comment puis-je obtenir seulement le 24917?

- Qu'est-ce qui serait plus facile? pour générer un fichier .svg avec le graphique, ou enregistrer des valeurs dans un fichier .csv (et générer un graphique avec OOo ou quelque chose de similaire). Peut-être d'autres bonnes idées?

Merci à l'avance,

-skazhy

Répondre

3

Vous pouvez effectuer les opérations suivantes pour obtenir votre numéro:

Définir l'expression régulière :

digits='[[:digit:]]+ *[[:digit:]]*' 

suivi de ces deux lignes:

num=$(echo $line | grep -Eo "$digits") 
num=${num// } 

ou ceux-ci:

# Bash >= 3.2 (syntax may be different for 3.0/3.1) 
[[ $line =~ $digits ]] 
num=${BASH_REMATCH[@]// } 

pour extraire le numéro de la $line variable contenant la ligne dans votre question.

Gnuplot devrait être facilement disponible. Quelques exemples de sa sortie peuvent être trouvés here.

Celles-ci proviennent de here.

example graphexample graph

0

Juste un processus (grep):

array=($(grep whatever filename)) && echo "${array[2]}${array[3]}"