Bonjour tout le monde,
Je me tourne vers vous car je rencontre un problème assez embêtant.
Pour planter le décor je ne suis pas un expert en bash mais j'essaie tout de même de comprendre et d'apprendre. Par contre je dois admettre que j'ai beaucoup de mal avec les commandes grep et sed. Je n'arrive jamais a trouver les bons arguments pour faire ce que je souhaite faire.
J'ai passé ces deux derniers jours à parcourir le net pour comprendre et trouver des solutions à mon problème mais impossible.
Concernant mon problème j'ai deux fichiers différents dont je veux extraire des information précises. Les deux fichiers ressemble à ça :
gamer.txt
Running command 'rconcmd' for instance 'TheIsland'
"
0. [GdK] Inity, 76561198029054012
1. Jean Claude, 75475434525234523
2. Ludovic, 324654665765867567
"
Dans ce fichier les deux premières lignes et la dernière ne m'intéresse pas du tout (ligne 1 : Running command 'rconcmd' for instance 'TheIsland' et ligne 2 : "). Ce qui m’intéresse dans chaque ligne c'est (en prenant exemple sur la ligne 3) le pseudo : [GdK] Inity et l'id : 76561198029054012. Chacune de ces deux valeurs devra être injecté dans une variable.
Mon script pour ceci ressemble à :
Malheureusement pour l'id egrep -o '[[:digit:]]* me retourne tous les chiffres de la ligne , mais je n'ai que besoin de la deuxième suite de chiffre sans le chiffre en début de ligne. Comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 while read lnid; do ligneid=`echo $lnid | sed 's/\"//g'` temppseudo=`echo $ligneid | sed -n 's/.*(\..*\),.*/\1/p'` tempid=`echo $ligneid | egrep -o '[[:digit:]]*'` done < gamer.txt
chat.txt
Running command 'rconcmd' for instance 'TheIsland'
"
[GdK] Inity (Inity): le message envoyé par l'utilisateur dans le chat
Mario76 (Jean Claude): Je suis un noob
Alexdu93 (Ludovic): Kevin qui Rox du poney
"
Dans ce fichier les deux premières lignes et la dernière ne m'intéresse pas du tout (ligne 1 : Running command 'rconcmd' for instance 'TheIsland' et ligne 2 : "). Ce qui m’intéresse dans chaque ligne c'est (en prenant exemple sur la ligne 3) le pseudo : [GdK] Inity id : Inity et le message : le message envoyé par l'utilisateur dans le chat. Chacune de ces deux valeurs devra être injecté dans une variable.
Mon script actuellement ressemble à :
Et cela semble bien fonctionner ... mais peut-être vous avez une idée plus rapide et plus simple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 while read ln; do ligne=`echo $ln | sed 's/\"//g'` pseudoIG=`echo $ligne | sed -n 's/.*(\(.*\)).*/\1/p'` message=`echo $ligne | sed 's/.*\(: .*\)/\1/'` pseudoST=`echo $ligne | sed 's/ *(.*//'` done < chat.txt
Voilà je vous remercie d'avance pour votre aide.
Partager