Résulta sortie de commande console
Résolu/Fermé
Bonjour,
je cherche en vain a récupérer le sortie standard de mon programme, si je le redirige dans un fichier, je me retrouve avec des millier de ligne.
Ce que je voudrais, c'est récupérer la sortie standard de mon programme toute les 10 seconde environ. et ce dans un fichier.
j'ai déjà lancé cette commande ( monprg > fichier.text ) qui me redirige la sortie dans un fichier , mais après quelques minutes, le fichier fait 48000 lignes !!! et donc travailler dessus devient impossible, sachant que je veux la dernière ligne...
je sais que je demande l'impossible mais si quelqu'un peu m'éclairer, me donner une façon de faire puisque je suis complétement perdu.
Voila si besoin demandez moi.
je cherche en vain a récupérer le sortie standard de mon programme, si je le redirige dans un fichier, je me retrouve avec des millier de ligne.
Ce que je voudrais, c'est récupérer la sortie standard de mon programme toute les 10 seconde environ. et ce dans un fichier.
j'ai déjà lancé cette commande ( monprg > fichier.text ) qui me redirige la sortie dans un fichier , mais après quelques minutes, le fichier fait 48000 lignes !!! et donc travailler dessus devient impossible, sachant que je veux la dernière ligne...
je sais que je demande l'impossible mais si quelqu'un peu m'éclairer, me donner une façon de faire puisque je suis complétement perdu.
Voila si besoin demandez moi.
A voir également:
- Résulta sortie de commande console
- Invite de commande - Guide
- Commande terminal mac - Guide
- Console action - Accueil - Jeu vidéo
- Airpods 3 date de sortie - Guide
- Commande dism - Guide
13 réponses
Utilisateur anonyme
Modifié par orinym le 2/10/2013 à 19:27
Modifié par orinym le 2/10/2013 à 19:27
Bonjour,
as-tu essayé avec tail?
(tacommande | tail > tonfichier)
Cordialement
NB: cela devrait te renvoyer les 10 dernières lignes, mais tu pourras faire varier ce nombre avec l'option -n
as-tu essayé avec tail?
(tacommande | tail > tonfichier)
Cordialement
NB: cela devrait te renvoyer les 10 dernières lignes, mais tu pourras faire varier ce nombre avec l'option -n
Utilisateur anonyme
2 oct. 2013 à 20:51
2 oct. 2013 à 20:51
bonsoir, je m'était servit de tail pour faire un affichage de ma dernière ligne.
Mais pas de cette façons ! je teste et je te donne des résulta !
Mais pas de cette façons ! je teste et je te donne des résulta !
Utilisateur anonyme
2 oct. 2013 à 20:58
2 oct. 2013 à 20:58
Après avoir testé, je me retrouve avec pour un traitement plus court 2300 ligne.
mais si j'applique tail rien de change. j'ai toujours autant de lignes...
mais si j'applique tail rien de change. j'ai toujours autant de lignes...
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
3 oct. 2013 à 08:07
3 oct. 2013 à 08:07
hello
cette commande affiche une ligne sur 100
cette commande affiche une ligne sur 100
commnde | awk '!((NR-1)%100)'
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
3 oct. 2013 à 09:46
3 oct. 2013 à 09:46
celle ci affiche une ligne toutes les 10s
commande | awk 'BEGIN {t=systime()} {if(systime()-t >= 10){print ; t=systime()}}'
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
4 oct. 2013 à 07:58
4 oct. 2013 à 07:58
bizarre
$ seq 1 1000 | awk '!((NR-1)%100)'
1
101
201
301
401
501
601
701
801
901
$
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
Modifié par ryko1820 le 3/10/2013 à 19:34
Modifié par ryko1820 le 3/10/2013 à 19:34
Hello,
je ne connais pas particulièrement ce programme mais comment se comporte-t-il quand il est utilisé sans la redirection ?
Y a t-il par exemple, un compteur de progression rafraîchi plusieurs fois par seconde qui s'affiche ... ?
Ou bien (c'est semble-t-il un downloader ?) les données chargées, sans commutateur (un peu comme avec curl), sont affichées vers la console, et en fait ce sont les datas téléchargées qui sont actuellement redirigées vers le fichier.
Qu'est ce que contient actuellement le fichier vers lequel la sortie standard est redirigée ?
Que cherches tu à faire en loguant la sortie de ce prog. ?
Ce qui serait peut être plus intéressant serait, peut-être, de récupérer la sortie des erreurs, en bref le stderr que le stdout ?
Sinon si c'est vraiment sur la sortie standard que l'on cherche à obtenir une info, par exemple, un message confirmant la fin du téléchargement, dans ce cas là, il faut piper vers un grep ...
Voilà ...
You may stop me but you can't stop us all ;-)
je ne connais pas particulièrement ce programme mais comment se comporte-t-il quand il est utilisé sans la redirection ?
Y a t-il par exemple, un compteur de progression rafraîchi plusieurs fois par seconde qui s'affiche ... ?
Ou bien (c'est semble-t-il un downloader ?) les données chargées, sans commutateur (un peu comme avec curl), sont affichées vers la console, et en fait ce sont les datas téléchargées qui sont actuellement redirigées vers le fichier.
Qu'est ce que contient actuellement le fichier vers lequel la sortie standard est redirigée ?
Que cherches tu à faire en loguant la sortie de ce prog. ?
Ce qui serait peut être plus intéressant serait, peut-être, de récupérer la sortie des erreurs, en bref le stderr que le stdout ?
megadl 'https://mon_adresse' 2> fichier_des_erreurs.log
Sinon si c'est vraiment sur la sortie standard que l'on cherche à obtenir une info, par exemple, un message confirmant la fin du téléchargement, dans ce cas là, il faut piper vers un grep ...
megadl 'https://mon_adresse' | grep "le message que je cherche à voir" > fichier_des_erreurs.log
Voilà ...
You may stop me but you can't stop us all ;-)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 oct. 2013 à 19:08
3 oct. 2013 à 19:08
Salut,
Pour t'aider il faudrait qu'on en sache un peu plus sur ce que fait réellement ton programme, et surtout ce qu'il produit comme sortie ;-\
Pour t'aider il faudrait qu'on en sache un peu plus sur ce que fait réellement ton programme, et surtout ce qu'il produit comme sortie ;-\
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
3 oct. 2013 à 19:13
3 oct. 2013 à 19:13
Oui, un résumé de ce que je disais :p
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 oct. 2013 à 19:28
3 oct. 2013 à 19:28
Oups, j'ai posté juste après toi et du coup je n'ai pas vu ton post, désolé ;-\
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
3 oct. 2013 à 19:29
3 oct. 2013 à 19:29
pas de souci, je croyais que c'était pour clarifier pour le demandeur ...
Utilisateur anonyme
Modifié par guigui144 le 4/10/2013 à 08:17
Modifié par guigui144 le 4/10/2013 à 08:17
Bonjour, alors pour vous répondre à tous :
- "je ne connais pas particulièrement ce programme mais comment se comporte-t-il quand il est utilisé sans la redirection ? " il se comporte de la meme facon que si je fait la redirection !
- "Y a t-il par exemple, un compteur de progression rafraîchi plusieurs fois par seconde qui s'affiche ... ? "Oui il s'agit d'un programme qui télécharge le fichier que l'on lui donne. mais plus spécifiquement un fichier provenant du site mega la progression s'affiche de cette manière, en une seule ligne qui s'actualise : buildire.rar: 4% - 158,9 Kio of 3,2Â Mio
- "Qu'est ce que contient actuellement le fichier vers lequel la sortie standard est redirigée ? " le fichier dans lequel sont redirigé les valeur ce trouve comme ceci après ou pendant l'exécution du programme : (exemple sur 20 ligne et pas 2300 ... :) )
les valeur avec crochet tel que " [37;1m" corresponde aux couleur d'affichage du texte.
- "Que cherches tu à faire en loguant la sortie de ce prog. ? " ==> ce programme est censé télécharger un fichier depuis le site mega et retourner l'avancement grâce au fichier de log pour avoir le pourcentage. et ainsi actualiser la page avec php. php a pour rôle d'exécuter la commande et ensuite de vérifier l'état de l'avancement. Mais pour l'instant je cherche a le faire a la main sans automatiser la tache mais c'est la que je bug ...
- je ne peux pas chercher une valeur en particulier puisque je cherche a récupérer le pourcentage d'avancement. qui théoriquement change.
comme il y a beaucoup de ligne ce que maintenant je cherche a faire c'est limiter le nombre qui sera écrit dans le fichier. par exemple un début serait d'actualiser le fichier toute les 10 secondes avec une ligne récupéré a un l'instant T dans la sortie standard du programme. histoire de me retrouver avec un fichier de quelques centaine et pas des millier de ligne.
Voila j'espère avoir répondu a vos questions ...
et j'espère que mes réponse vous aiderons a m'aider ...
Merci pour tous en tout cas.
- "je ne connais pas particulièrement ce programme mais comment se comporte-t-il quand il est utilisé sans la redirection ? " il se comporte de la meme facon que si je fait la redirection !
- "Y a t-il par exemple, un compteur de progression rafraîchi plusieurs fois par seconde qui s'affiche ... ? "Oui il s'agit d'un programme qui télécharge le fichier que l'on lui donne. mais plus spécifiquement un fichier provenant du site mega la progression s'affiche de cette manière, en une seule ligne qui s'actualise : buildire.rar: 4% - 158,9 Kio of 3,2Â Mio
- "Qu'est ce que contient actuellement le fichier vers lequel la sortie standard est redirigée ? " le fichier dans lequel sont redirigé les valeur ce trouve comme ceci après ou pendant l'exécution du programme : (exemple sur 20 ligne et pas 2300 ... :) )
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m0 octet [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m1,4 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m2,8 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m4,2 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m5,6 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m7,0 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m8,4 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m9,8 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m11,2 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m12,7 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m14,1 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m15,5 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m16,9 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m18,3 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m19,7 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m21,1 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m22,5 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m23,9 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m25,3 Kio [0m of 3,2 Mio [0K
[37;1mbuildire.rar [0m: [32;1m0% [0m - [32;1m26,7 Kio [0m of 3,2 Mio [0K
les valeur avec crochet tel que " [37;1m" corresponde aux couleur d'affichage du texte.
- "Que cherches tu à faire en loguant la sortie de ce prog. ? " ==> ce programme est censé télécharger un fichier depuis le site mega et retourner l'avancement grâce au fichier de log pour avoir le pourcentage. et ainsi actualiser la page avec php. php a pour rôle d'exécuter la commande et ensuite de vérifier l'état de l'avancement. Mais pour l'instant je cherche a le faire a la main sans automatiser la tache mais c'est la que je bug ...
- je ne peux pas chercher une valeur en particulier puisque je cherche a récupérer le pourcentage d'avancement. qui théoriquement change.
comme il y a beaucoup de ligne ce que maintenant je cherche a faire c'est limiter le nombre qui sera écrit dans le fichier. par exemple un début serait d'actualiser le fichier toute les 10 secondes avec une ligne récupéré a un l'instant T dans la sortie standard du programme. histoire de me retrouver avec un fichier de quelques centaine et pas des millier de ligne.
Voila j'espère avoir répondu a vos questions ...
et j'espère que mes réponse vous aiderons a m'aider ...
Merci pour tous en tout cas.
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
4 oct. 2013 à 08:29
4 oct. 2013 à 08:29
probable que les lignes ne se terminent pas avec \n mais avec \r
essayer
essayer
commande | awk 'BEGIN {RS="\r"; t=systime()} {if(systime()-t >= 10){print ; t=systime()}}'
Utilisateur anonyme
4 oct. 2013 à 16:48
4 oct. 2013 à 16:48
C'est une chose que je n'est pas précisé ( désolé j'ai oublié ) Et oui je me suis aperçu que les ligne ne termine pas par des \n mais par des ^M et apparemment d'après mes recherche par un ^M qui est l'équivalent de \n sous mac...
donc si je comprend il faut que j'adapte
Est-ce correct ?
donc si je comprend il faut que j'adapte
commande | awk 'BEGIN {RS="\r"; t=systime()} {if(systime()-t >= 10){print ; t=systime()}}'en
commande | awk 'BEGIN {RS="^M"; t=systime()} {if(systime()-t >= 10){print ; t=systime()}}'
Est-ce correct ?
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
Modifié par ryko1820 le 4/10/2013 à 20:42
Modifié par ryko1820 le 4/10/2013 à 20:42
Sinon essayer d'enregistrer dans une variable le pourcentage de progression et n'enregistrer dans le log. l'heure, la taille récupéré et le pourcentage de progression qu'à chaque fois que ce pourcentage change, cela permettrait d'avoir une progression sur une centaine de ligne.
Nettoyer au passage les caractères inutiles dans la ligne, ne doit pas non plus être bien sorcier, d'autant plus que tu sembles mieux maîtriser que moi awk.
Sans oublier de garder une gestion des erreurs en cas de problème (pas de OK en fin de ligne ?) ...
Je ne vois pas trop comment coder ça, mais ça ne me semble pas impossible ...
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
5 oct. 2013 à 08:44
5 oct. 2013 à 08:44
si awk ne connait pas systime, essayer:
awk 'BEGIN {RS="\r"; d="date +%s"; d | getline t} {close(d); d | getline x; if(x-t >= 10){print ; close(d); d | getline t}}'
Utilisateur anonyme
Modifié par guigui144 le 5/10/2013 à 10:50
Modifié par guigui144 le 5/10/2013 à 10:50
Cette commande me convient ! elle marche comme je le souhaite !
cependant si maintenant je veux rediriger cette sortie temporisé dans un fichier ? je rajoute " > file.txt " a la suite de la commande awk ?
Edit: après avoir testé cela marche ! Merci !
Par contre a la fin , quand le fichier est téléchargé le programme ecrit : file downloaded et la temporisation ne me permet pas de le récupérer : il y a t'il un moyen de le faire ?
cependant si maintenant je veux rediriger cette sortie temporisé dans un fichier ? je rajoute " > file.txt " a la suite de la commande awk ?
Edit: après avoir testé cela marche ! Merci !
Par contre a la fin , quand le fichier est téléchargé le programme ecrit : file downloaded et la temporisation ne me permet pas de le récupérer : il y a t'il un moyen de le faire ?
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
5 oct. 2013 à 11:14
5 oct. 2013 à 11:14
je n'ai pas bien compris la dernière question.
est-ce parce que le awk ne se termine pas quand le fichier est téléchargé ?
est-ce parce que le awk ne se termine pas quand le fichier est téléchargé ?
pardon je reformule :
Lorsque ça télécharge, awk fait son effet et m'affiche une ligne toute les x seconde.
Mais quand la commande ce termine en temps normale ( la commande megadl uniquement )
elle affiche " file downloaded ". Mais cela tombe entre l'intervalle de temps et awk n'a pas encore actualisé la ligne. ce que je souhaiterais c'est récupérer cette dernière ligne qui affiche "file downloaded".
Lorsque ça télécharge, awk fait son effet et m'affiche une ligne toute les x seconde.
Mais quand la commande ce termine en temps normale ( la commande megadl uniquement )
elle affiche " file downloaded ". Mais cela tombe entre l'intervalle de temps et awk n'a pas encore actualisé la ligne. ce que je souhaiterais c'est récupérer cette dernière ligne qui affiche "file downloaded".
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
5 oct. 2013 à 12:23
5 oct. 2013 à 12:23
essayer avec:
awk 'BEGIN {RS="\r"; d="date +%s"; d | getline t} {close(d); d | getline x; if(x-t >= 10){print ; close(d); d | getline t}} /file downloaded/ {print ; exit} '
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
5 oct. 2013 à 14:44
5 oct. 2013 à 14:44
BEGIN {RS="\r"; défini ^M comme fin de ligne à la place de \n
d="date +%s"; d contient la commande "date +%s" qui retourne des secondes (remplace systime()
d | getline t} exécute "date +%s" et met le resultat dans la variable t
{close(d); d | getline x; if(x-t >= 10) pour chaque ligne, prend la date et compare au t précédent
{print ; close(d); d | getline t}} si le temps est >= 10s, on imprime la ligne et on prend le nouveau temps
/file downloaded/ {print ; exit} si la ligne contient "file downloaded", on imprime et termine
d="date +%s"; d contient la commande "date +%s" qui retourne des secondes (remplace systime()
d | getline t} exécute "date +%s" et met le resultat dans la variable t
{close(d); d | getline x; if(x-t >= 10) pour chaque ligne, prend la date et compare au t précédent
{print ; close(d); d | getline t}} si le temps est >= 10s, on imprime la ligne et on prend le nouveau temps
/file downloaded/ {print ; exit} si la ligne contient "file downloaded", on imprime et termine
Utilisateur anonyme
5 oct. 2013 à 14:59
5 oct. 2013 à 14:59
Merci Beaucoup pour ton aide !!
j'arrive a faire ce que je souhaite maintenant ! disons que avec mes compétence seul, honnêtement je ne serais pas arrivé a une telle ligne de commande ... Je ne suis encore un pro en la matière ...
Et Encore Merci !
j'arrive a faire ce que je souhaite maintenant ! disons que avec mes compétence seul, honnêtement je ne serais pas arrivé a une telle ligne de commande ... Je ne suis encore un pro en la matière ...
Et Encore Merci !