Chercher une syntaxe, en extraire un mot puis le stocker [.log]
Fermé
Romain_iBalix
-
Modifié par Romain_iBalix le 25/06/2015 à 14:35
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 26 juin 2015 à 11:11
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 26 juin 2015 à 11:11
A voir également:
- Chercher une syntaxe, en extraire un mot puis le stocker [.log]
- Extraire une video youtube - Guide
- Extraire son d'une video - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Trousseau mot de passe iphone - Guide
- Mettre un mot de passe sur un dossier - Guide
4 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 420
25 juin 2015 à 17:50
25 juin 2015 à 17:50
Salut,
On va partir du principe que le nom de ton joueur (XXX) se trouve bien en début de ligne et que ladite ligne comporte la phrase "a remporté la partie", ce qui nous donne avec "sed" :
On va partir du principe que le nom de ton joueur (XXX) se trouve bien en début de ligne et que ladite ligne comporte la phrase "a remporté la partie", ce qui nous donne avec "sed" :
$ cat plop
Voici le problème en question:
J'ai configuré un plugin de jeu automatisé qui, à la fin de la partie, écrit dans les logs
XXX a remporté la partie" (XXX étant le nom d'un joueur).
Je souhaiterais récupérer le "XXX", le stocker dans un fichier texte puis l'utiliser pour le récompenser par la suite.
$ sed -n 's/\(.*\) a remporté la partie.*/\1/p' plop
XXX
Salut,
Ce serait plus simple non ?
J'ai configuré un plugin de jeu automatisé qui, à la fin de la partie, écrit dans les logs "XXX a remporté la partie"Juste un truc, puisque tu sais écrire dans les fichiers logs, pourquoi n'écris-tu pas aussi directement le nom du joueur dans un fichier (portant le même nom que le joueur par exemple) ?
Ce serait plus simple non ?
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 26/06/2015 à 09:50
Modifié par dubcek le 26/06/2015 à 09:50
hello
$ grep -oP '(?<=[0-9][0-9];).*(?= a remporté)' log
lmi3alix
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
26 juin 2015 à 10:23
26 juin 2015 à 10:23
Salut.
si ton nom de joueur ne comporte pas d'espace, tu peu faire ça :
selectionner uniquement les bonnes lignes :
Ensuite, tu selectionnes juste le premier groupe de caractère (-f 1) avant l'espace (-d ' '):
Pour finir, tu peux compter le nombre de fois que chaque joueur a gagné en triant la sortie et en comptant le nombre de lignes identique :
Ce qui donne au final :
Note : je n'ai pas testé, mais avec mes explication et les man de chaque "fonction" tu devrais t'en sortir.
si ton nom de joueur ne comporte pas d'espace, tu peu faire ça :
selectionner uniquement les bonnes lignes :
grep "a remporté"
Ensuite, tu selectionnes juste le premier groupe de caractère (-f 1) avant l'espace (-d ' '):
cut -d ' ' -f 1
Pour finir, tu peux compter le nombre de fois que chaque joueur a gagné en triant la sortie et en comptant le nombre de lignes identique :
sort | uniq -c
Ce qui donne au final :
grep "a remporté"|cut -d ' ' -f 1 | sort | uniq -c <log
Note : je n'ai pas testé, mais avec mes explication et les man de chaque "fonction" tu devrais t'en sortir.
26 juin 2015 à 10:25
Pour le début de ligne non ?
26 juin 2015 à 11:11
Exact, honte à moi, j'ai oublié le chapeau chinois ;-(
Merchi ;-)