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 GNU Discussion :

Contrôle caractère dans fichier


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut Contrôle caractère dans fichier
    Bonjour,

    j'ai un fichier contenant une configuration répéter plusieurs fois :

    backend mybackend
    mode tcp
    balance roundrobin
    stick-table type ip size 20k peers mypeers
    stick on src


    et je voudrais un script bash pour m'assurer qu'il ne manque jamais d'option, j'essai avec une boucle for mais je n'y arrive pas du tout, avez vous une idée svp?

  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 376
    Points
    19 376
    Par défaut
    Bonjour,

    comment tu sais s'il manque une option ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut contrôle caractere fichier
    Hello,

    En fait dans mon fichier, il arrive parfois qu'une option sois manquante ou est en double
    c'est un fichier renseigner automatiquement par un orchestrator qui parfois bug..

    par exemple ce matin dans mon fichier j'avais deux fois une ligne avec une adresse IP.

    je voudrais m'assurrer qu'il y est toujours le meme nombre de param a chaque ajout de config




    ça ressemble a ça :



    backend AAA
    mode tcp
    balance roundrobin
    stick-table type ip size 20k peers mypeers

    server srv1 192.168.0.30:80



    backend BBB
    mode tcp
    balance roundrobin
    stick-table type ip size 20k peers mypeers

    server srv1 192.168.0.30:80



    backend CCC
    mode tcp
    balance roundrobin
    stick-table type ip size 20k peers mypeers

    server srv1 192.168.0.30:80

    backend DDD
    mode tcp
    balance roundrobin
    stick-table type ip size 20k peers mypeers

    server srv1 192.168.0.30:80





    et je voudrais eviter de me rerotuver avec un truc du genre :


    backend AAA
    mode tcp
    balance roundrobin
    stick-table type ip size 20k peers mypeers

    server srv1 192.168.0.30:80
    server srv1 192.128.0.30:80


    MAIS AUSSI SANS AVEC DES OPTIONS MANQUANTES COMME CI DESSOUS LES SERVEUR

    backend AAA
    mode tcp
    balance roundrobin
    stick-table type ip size 20k peers mypeers

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut Phebs
    Je n’ai aucun possibilité de savoir s’il manque une option c’est justement ce contrôle via un script que je voudrais mettre en place

  5. #5
    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 376
    Points
    19 376
    Par défaut
    alors comment veux-tu qu'un script puisse le faire ?

    c'est un script pour automatiser tes actions, pas de la magie !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    pas de la magie !
    Surtout pour les informations manquantes !
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Je penses que tu vas plus comprendre ce que je veux comme ça exemple :

    Ds le ficher de conf Les ligne commence par exemple par les param
    À :
    B :
    C :
    D:


    À chaque ajout de nouveau serveur c’est 4 lignes sont
    Ajoutée je voudrais juste un script qui puisse me dire lesquels sont en double ou manquante l’ordre dois tjrs être le même

    À
    B
    C
    C
    D

    Dans cette C est en double faudrait un script qui génère une log d’erreur ds le ficher param manquant ou en double

  8. #8
    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 376
    Points
    19 376
    Par défaut
    ok. donc il faut lire le fichier, et conserver la ligne en cours pour qu'à la boucle suivante elle soit comparée avec la nouvelle ligne en cours.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut Phebs
    Oui ds ce genre

    Code pseudo-code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Cat file | awk Print $1 | while Read Line 
    Do 
    If line 1 = A
        Alors Line 2 =B  sinon erreur b manque 
                   Line 3 = C sinon erreur c manque 
                   Line 4 = D sinon erreur d manque 
    Done

  10. #10
    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 376
    Points
    19 376
    Par défaut
    Citation Envoyé par NBaH
    on le voit que c'est un lien ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut Phebs
    C’est à dire un lien ?


    J’ai essayé ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    À=«*À*» 
    Cat file | awk Print $1 | while Read Line 
    Do 
    If [$line 1 = $A]
        Then  
                [ Line 2 -ne B ]  && echo B absent
                [ Line 3 -ne C ] && echo C absent  
                [ Line 4 -ne D ]&&  echo D absent 
    Done
    Problème ça marche pas

  12. #12
    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 376
    Points
    19 376
    Par défaut
    un lien : tu cliques dessus, et ça affiche une nouvelle page.

    ben, oui, « ça marche pas » : t'as écrit n'importe comment.
    le shell respecte certaines règles : la syntaxe.
    ça s'apprend.

    il y a des liens dans ma signature, il faut les lire aussi.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut Phebs
    Oui je sais j’ai fait ça sur mon tel pour te montrer
    Si j’avais seulement quelque lignes ça irais mais j’en ai Des centaine et si l’ordre n’est pas respecter je dois afficher erreur mais ça marche pas

  14. #14
    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 376
    Points
    19 376
    Par défaut
    d'accord. ça marche pas.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut Phebs
    Un grand merci pour ton aide en tt cas je vais continue à chercher j’espère trouver.

    Le problème c’est que n’arrive à lui faire faire comparer
    La line 1 avec les line 2 line 3 line 4et incrément jusqu’à prochain À puis recommencer l’opération

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut Phebs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i in file 
    Do 
    If I = à 
        If I+1 -ne b alors erreur 
        If I+2-ne c alors erreur 
        If I+3-ne d alors erreur 
     
    Done
    Je voudrais un truc comme ça mais avec les bouche et le Bash j’arrive pas

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -z 's/\(\nserver[^\n]*\)\(\nserver[^\n]*\)\+/\1/g' fichier
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  18. #18
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    en reprenant le principe de ton code, une façon de faire consiste à sortir le read line du while et lire chaque ligne quand on en a besoin, on utilise alors le contrôle de flot (break et continue) pour gérer la boucle plus finement
    un truc de ce genre (non testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    while true; do
       read line
       if [ $line = $A ]; then
          read line
          if [ $line = $B ]; then
             read line
             if [ $line = $C ]; then
                read line
                if [ $line = $D ]; then
                   echo "les 4 lignes A,B,C,D sont OK"; break # on quitte le while
                else
                   echo "manque $D"
             else
                echo "manque $C"; continue # on casse le while et on passe à la ligne suivante directement
          else
             echo "manque $B"; continue
       else
          echo "manque $A"; continue
    done <(awk '{print $1}' fichier)

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut PHEBS
    Un grand merci Vraiment, merci a vous tous !

    je ne savais pas que le read line me permettait d'incrementé directement..

    Merci Beaucoup !

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 0
    Points
    0
    Par défaut PHEBS
    j'ai quelques choses qui marche bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #!/bin/bash
     
    FICHIER=`cat FIC`
    #echo -e "$FICHIER"
     
    while read line
    do
     
            if [ "$line" = "backend" ]
                    then
                    echo $line
                    read line
                    [ "$line" = "http" ] && echo $line || exit 0
                    read line
                    [ "$line" = "load" ] && echo $line || exit 0
                    read line
                    [ "$line" = "link" ] && echo $line || exit 0
     
     
            fi
    je vais poffiner avec des code erreur...


    Merci les gars vraiment !

Discussions similaires

  1. Exports de chaînes de caractère dans fichier texte
    Par Stormy31 dans le forum Langage
    Réponses: 4
    Dernier message: 29/01/2009, 13h31
  2. Comment trouver une chaine de caractère dans fichier texte
    Par youssef1989 dans le forum Débuter
    Réponses: 3
    Dernier message: 01/05/2008, 16h45
  3. [Borland 6] Supprimer caractère dans fichier
    Par grmi91 dans le forum C++Builder
    Réponses: 1
    Dernier message: 16/04/2007, 16h18
  4. [FPDF] Recherche chaine caractères dans fichier pdf
    Par licorne dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/10/2005, 11h55
  5. chaines de caractères dans fichier .rc ou .res
    Par raggadoll dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/03/2004, 15h19

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