IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Recherche et extraction dans chaîne de caractère (log)


Sujet :

Shell et commandes POSIX

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Recherche et extraction dans chaîne de caractère (log)
    Bonjour !

    Je suis débutant en bash et j'aimerais avoir de l'aide pour réaliser l'opération suivante avec cette ligne comme exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    **********************************************[16/Oct/2018:03:44:16 +0200] "GET /fr/a*************************************************.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) **********/605.1.15 (KHTML, like *****) Version/12.0 Mobile/154148 Safari/604.1" 11487 "-" "https://**************/fr/accueil/espace-client******-*******.html?goto=%2Fbin%2Fedf_rc%2Fs*****%2FsasServlet%3Fprocessus%3**DB%26fo*****uth%3Dtrue"
    J'aimerais récupérer les chiffres en gras (11487) mais je ne sais pas comment faire étant donné que dans la ligne il y a plusieurs pattern identique. J'aimerais pouvoir l'appliquer par la suite à toutes les lignes de mon fichier qui sont de composition presque similaire avec quelques variations.

    Merci !

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat fichier.txt
    **********************************************[16/Oct/2018:03:44:16 +0200] "GET /fr/a*************************************************.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) **********/605.1.15 (KHTML, like *****) Version/12.0 Mobile/154148 Safari/604.1" 11487 "-" "https://**************/fr/accueil/espace-client/******-*******.html?goto=%2Fbin%2Fedf_rc%2Fs*****%2FsasServlet%3Fprocessus%3**DB%26fo*****uth%3Dtrue"
    $ sed 's/.*"GET[^"]*"\([^"]*\)".*/\1/' fichier.txt
     11487
    qui sont de composition presque similaire avec quelques variations.
    C'est pour cela que tu les as postés... pour qu'on comprenne.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 284
    Points : 12 736
    Points
    12 736
    Par défaut
    Bonjour,

    Si ce que tu présentes est toujours dans le même accabit, il s'agit de l'avant avant dernier champs de la ligne, donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{print $(NF-2)}' fichier.log
    Mais le mieux, serait d'avoir en amont réglé l'écrivain du log à mettre un vrai séparateur de champs comme par exemple le '|', car ma solution fonctionne, si dans le dernier et avant dernier champs ne sont pas vide et n'ont pas de caractère espace dans leur valeur.
    Cordialement.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'essaie de comprendre et tester vos solutions et je vous fais un retour. Merci les gars !

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Bonjour,

    Si ce que tu présentes est toujours dans le même accabit, il s'agit de l'avant avant dernier champs de la ligne, donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{print $(NF-2)}' fichier.log
    Mais le mieux, serait d'avoir en amont réglé l'écrivain du log à mettre un vrai séparateur de champs comme par exemple le '|', car ma solution fonctionne, si dans le dernier et avant dernier champs ne sont pas vide et n'ont pas de caractère espace dans leur valeur.
    J'ai du mal avec la notion "champ" , un champ représente tous les caractères ou chaine de caractère tant qu'il n'y a pas d'espace ?

    exemple :

    (KHTML, like Gecko)

    3 champs ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bon j'ai effectué cette commande pour récupérer les données que je voulais et les mettre dans un fichier "selection".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat publish_ssl_access_log-20181017 | grep -E ".*/espace/tableau-de-bord.html.*selecteur.html.*" | awk -F\" '{print $9}'> selection
    J'aimerais maintenant pouvoir faire la somme des valeurs que j'obtiens. Je continue à chercher mais je veux bien quelques pistes

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 284
    Points : 12 736
    Points
    12 736
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F\" '{x=x+$9;print $9}END{print "TOTAL="x}'
    Cordialement.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F\" '{x=x+$9;print $9}END{print "TOTAL="x}'


    Merci ! finalement je voulais dire la somme donc j'ai modifié.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 08/06/2016, 11h57
  2. [LibreOffice][Tableur] Recherche mot dans chaîne de caractères
    Par ludovik49 dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 04/10/2014, 17h09
  3. [XL-2010] Recherche d'une sous-chaîne de caractères dans une cellule
    Par StephThai dans le forum Excel
    Réponses: 7
    Dernier message: 13/01/2014, 04h21
  4. Réponses: 7
    Dernier message: 06/01/2011, 19h29
  5. nombre de répétitions dans chaînes de caractères
    Par jocarina dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/06/2005, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo