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 :

Grep avec regex non fonctionnel AIX


Sujet :

Shell et commandes POSIX

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Grep avec regex non fonctionnel AIX
    Bonjour,

    Je galère avec un grep et 2 regex, je ne comprends pas pourquoi, je suis sur AIX.

    Mon fichier contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ######3743910066006078766101########################################################################################################################0000006469F4#################0000010007022022010120221231###################################################################F############################################################################################################################################################################################01####7#100####4#80####2#########150##################02####################################################03####################################################049#130#####150#######################################05##150###############################################06##F#################################################07###30######50#######################################08##60##############60############15##################090###################################################1021F###########60####################################11###50###############################################12F360##############60##########15####################130###################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00###############################################################################################################################################################################5##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################000000000000702##F000001###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
    Ma commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat recherche | sed 's/[^0-9F]/#/g' | grep -E '^.{158}F4' | grep -E '^.{1110}13'
    Elle ne fonctionne pas.
    Pourtant le premier grep fonctionne mais pas le second.
    Est-ce un problème de buffer ? ou alors c'est trop loin dans la ligne ?

    Autre test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print if m/^.{1110}13/'
    recherche => ne fonctionne pas également alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne 'print if m/^.{158}F4/'
    = recherche fonctionne

    Merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    Bonjour,

    le 13 est à la position 1110 et 1111, mais il y a 1109 caractères avant, pas 1110.
    et le F est à la position 159.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed -E 's/^.{1109}//' recherche.txt                                                                                                                                                                            
    130#########################...
    ici, pour l'exemple, je supprime les 1109 premiers caractères.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Sur Linux peut être mais pas sur AIX !
    J'ai essayé bien entendu de changer les positions.
    Sachant que le premier grep fonctionne bien, donc que je suis à la bonne position !!

    En gros si je reprends ton sed, il ne fait rien, il affiche tout le fichier recherche.txt au lieu de supprimer le début !

    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oslevel -s
    7100-05-06-2028

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    et comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^.\{1109\}//' recherche.txt
    ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     sed 's/^.\{1109\}//' recherche.txt
    sed: Function s/^.\{1109\}// cannot be parsed.
    J'avais oublié de préciser que n'existe pas sur AIX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: illegal option -- E

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    je dirais que le pauvre sed d'AIX ne supporte pas les intervalles.
    il n'existe pas un "gsed" (GNU sed) sur AIX ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    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

    Citation Envoyé par N_BaH
    il y a 1109 caractères avant, pas 1110.
    Citation Envoyé par popol55
    Sur Linux peut être mais pas sur AIX !
    Citation Envoyé par Flodelarab
    Dans ton exemple posté, en tout cas, cela marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cat recherche | sed 's/[^0-9F]/#/g' | grep -E '^.{158}F4' | grep -E '^.{1109}13'
    ######3743910066006078766101########################################################################################################################0000006469F4#################0000010007022022010120221231###################################################################F############################################################################################################################################################################################01####7#100####4#80####2#########150##################02####################################################03####################################################049#130#####150#######################################05##150###############################################06##F#################################################07###30######50#######################################08##60##############60############15##################090###################################################1021F###########60####################################11###50###############################################12F360##############60##########15####################130###################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00####################################################00###############################################################################################################################################################################5##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################000000000000702##F000001###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Oui depuis le début le problème vient de AIX !

    Pas de gsed sur ma machine...
    J'ai essayé de chercher une alternative avec des awk ou autres mais c'est pas concluant.

  9. #9
    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
    Citation Envoyé par popol55 Voir le message
    Oui depuis le début le problème vient de AIX !
    J'ai plutôt l'impression que le problème vient du fait que tu n'admettes pas que 1110 est faux. C'est 1109.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Non, car même avec 1109 ça ne marche pas !

    Comme si il perdait le fil à partir d'un certain nombre de caractères.

    Si par exemple j'enlève 500 caractères ça ne marche toujours pas.
    Si j'en enlève 1000 c'est bon.

    Ça rend fou !!

    Edit - bon oui le 1110 au lieu de 1109 y était aussi pour quelque chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat recherche | grep -E '^.{158}F4' | perl -ne 'print if m/^.{1109}13/'
    ça fonctionne avec le perl !

    Merci !!

  11. #11
    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
    Face à ce genre de bizarrerie, je vérifierais la présence ou non de caractères non-imprimables. Avec des commandes du type :
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  12. #12
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 717
    Points
    12 717
    Par défaut
    A une époque, une ligne ne devait pas dépasser 255 caractères, peut-être que sous aix coté commande c'est toujours le cas...

    Sinon, as-tu essayé un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -E '^.{200}.{200}.{200}.{200}.{200}.{110}13'
    Après, le 110 sera peut-être 109...
    Cordialement.

  13. #13
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Pour information le moteur de regex de google re2 limite la répétition à 1000. Donc ça n'a rien d'improbable qu'il y ait également une limitation sur les quantificateurs de grep.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  14. #14
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    A une époque, une ligne ne devait pas dépasser 255 caractères, peut-être que sous aix coté commande c'est toujours le cas...

    Sinon, as-tu essayé un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -E '^.{200}.{200}.{200}.{200}.{200}.{110}13'
    Après, le 110 sera peut-être 109...
    Cela fonctionne très bien avec ta technique (et 109 )
    Tu dois avoir vu juste sur la limite d'une ligne !

    Merci

Discussions similaires

  1. Regex non fonctionnelles
    Par Jess86 dans le forum Langage
    Réponses: 17
    Dernier message: 03/04/2015, 17h22
  2. [Débuter] Exemples Qt Quick avec menu non fonctionnel
    Par PerryDev dans le forum Qt Quick
    Réponses: 0
    Dernier message: 06/05/2014, 18h04
  3. grep avec parenthèses non capturantes
    Par Tchupacabra dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/09/2013, 12h19
  4. regex non fonctionnelle
    Par patator63 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/04/2011, 00h01
  5. Problème avec regex non trouvé
    Par Damien69 dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2008, 13h32

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