Je dois télécharger plusieurs fichiers avec E.g. Je télécharge avec p> et la sortie est p> J'ai besoin de grep la vitesse de téléchargement totale, c'est-à-dire chaîne P.s. Peut avoir besoin de rendre compte de l'affaire que nous téléchargerons un seul fichier, donc il n'y aura pas de sortie finale à partir de wget code> et mesurer la vitesse de téléchargement.
490 kb / s code>.
Comment puis-je faire cela? P>
fini code> p> p> p>
6 Réponses :
mise à jour, une version de style grep à l'aide de SED: Version ancienne: p> Je pensais, il est plus facile de diviser la taille du fichier par le temps de téléchargement après la période de téléchargement. Télécharger. ; -) P> (/usr/bin/time -p wget ... 2>&1 >/dev/null; ls -l newfile) | \
awk '
NR==1 {t=$2};
NR==4 {printf("rate=%f bytes/second\n", $5/t)}
'
Pas plus facile, il me semble. Je dois déterminer la taille du fichier et le temps de téléchargement, diviser et si le temps est égal à zéro? Veuillez fournir l'exemple comment le faire par ex. avec bash
Le temps rapporté, zéro nécessite une attention particulière. Il semble que Grepping est peut-être plus facile. D'une manière ou d'une autre, j'ai eu la production dynamique et progressive de Wget à l'esprit que je pensais dur pour le grep.
Cela a fonctionné pour moi, en utilisant votre la regex que j'ai utilisé était mais note que je devais rediriger Ceci permet des choses comme wget -o / dev / null
\ ([0-9.] \ + [km ] B / s \) code> p>
starr code> sur
stdout code> de sorte que la commande était la suivante: p> < Pré> xxx pré>
923 kb / s code> et
1,4 mb / s code> p>
grep code> vient de trouver des correspondances. Pour obtenir la ou les valeurs, vous pouvez utiliser
sed code> à la place: p>
Pour moi, il retourne toute la ligne qui contient la vitesse. Mais comment puis-je obtenir seulement ce qui est à l'intérieur des supports? par exemple. 923 kb / s code> ou
1,4 mb / s code>?
Maintenant, l'exemple avec sed code> fonctionne - il extrait la vitesse (
923 kb / s code>), mais avant qu'il imprime toutes les autres sorties.
@Nick: Combinez-les. Unix Shell est tout au sujet de la pipeline - wget abc | grep ghi | sed xyz code>
@Nickolaileschov Vous pouvez transmettre l'option - correspondant à code> (
-o code>) à grep pour obtenir la ficelle juste à l'intérieur des supports.
... je suis sûr qu'il y a des raisons de la folie. Pourquoi stardr. tant pis.
Pourquoi ne pouvez-vous pas simplement faire cela:
perl -ne "/^Downloaded.*?\((.*?)\)/; print $1"
La ligne avec "téléchargé" pourrait ne pas être là, si un seul fichier a été récupéré.
Comment utiliser cette chose avec wget?
Voici la suggestion. Vous pouvez utiliser WGET'S'S ''s's's's's's's's's's's's's's's's's's's's's's> - Taux limite = montant de la quantité code>. Par exemple, p>
- Taux de limite = 400K code> limitera le taux de récupération à 400 Ko / s. Puis c'est plus facile pour vous de
calculer la vitesse totale. Vous économise du temps et de l'angoisse mentale en essayant de la déguster. P>
cela fonctionne lorsque seulement 1 fichier est en cours de téléchargement. strong> J'ai commencé à utiliser Ceci est ma commande: p> l'option qui retournera au grep pour juste les unités, utilisez SED code> pour obtenir la vitesse de wget, mais je l'ai trouvée, alors je l'irriant pour que je puissi je suis restitué à grep. p>
-O code> -o code> signifie qu'il ne renvoie que cette pièce. Il correspond à 1 ou plus des 10 chiffres alors un espace. Puis éventuellement
k code> ou
m code> avant le
b / s code> p>
423 kb / s Code> (par exemple). P>
grep -o "[km] * b / s" code> et pour juste le numéro utilise
grep -o "[0123456789] \ + code>. p> p>
Je supprimerais la star de la deuxième classe de caractères, vous n'avez besoin que d'un k ou de M. Notez également qu'il y a plusieurs occurrences de vitesses dans la sortie, qui ne sont pas tous intéressants pour l'OP; Une solution complète doit prendre en compte le contexte, ce qu'Afaik ne peut pas être effectué par un seul appel grep code>.
Cela n'a donné que 1 sortie pour moi ...: / Il a eu plusieurs fois, mais il a dit qu'il n'aurait pas 2 fichiers ...? Je n'utilisais que 1 fichier.
Par exemple, obtenez la vitesse dans Mbit par seconde (en ajoutant --Report-vitesse = bits pour wget et modèle de petit changement GREP):
1,51 Mb/s
Cela peut ne pas couvrir la vitesse dans les GBP. Veuillez augmenter la couverture.
wget 'https://x.com' -O / dev / null 2> & 1 | grep -op '(? <= \ \ \ () \ d + \.? \ d + \ sb / s (? = \ \ \))' Code> Explication, Enregistrer sur NULL, REROUTE ERR TO OUT OUT, UTILISEZ SORTIE, utilisez hardcore REGEX, LOOKEDEDIDE POSITIVE, LOOKEAD POSITIVE