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

Linux Discussion :

opération sur chaine de caractères


Sujet :

Linux

  1. #1
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut opération sur chaine de caractères
    Bonjour,

    Je lis un fichier ligne par ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cat $fic | while read ligne
    do
            Commands
    done
    Dans la variable $ligne se trouve donc une chaine de caractère qui est la ligne lue.
    Les lignes sont formatées comme ca :

    #Environement=ENV_1
    #Session=921
    JE dois récupérer les valeurs ENV_1 et 921.
    Savez-vous comment spliter une chaine de caractère?

    MErci

    Mat

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Avec grep et cut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #! /bin/bash
    grep '#Environement=.*' fichier | cut -f 2 -d '='
    grep '#Session=.*' fichier | cut -f 2 -d '='
    Avec nawk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN {FS="="} /^#(Environement|Session)/ {print $2}' fichier

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 123
    Points
    28 123
    Par défaut
    Et avec awk :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk -F'=' '{ print $2 }' $ligne

  4. #4
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Le format de mon fichier a un peu change et je peux avoir 2 structures différentes pour les lignes. données séparées par un égual, ou par une tabulation.
    ex:

    #Environ=env
    #session=ses

    #pipo=piponame
    #all '2006/294 12:00:00.000000' '2006/294 13:00:00.000000'
    #file1
    #file2
    En fait je lis ligne par ligne, et j'aimerai faire un test du genre, si Environnement, je récupère env, si session je récupère ses, si pipo, alors je récupère piponame et les données des lignes suivantes, sur celle qui suit, il y a 3 champs, séparés par tabulation, et sur celles qui suivent des noms de fichier, par ligne.

    Pour lire mon fichier, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    cat $file | while read line
    do
            instruction
    done
    Je voudrais savoir comment traiter une chaine de caractère dans la variable $line et non dans un fichier.
    J'avais déjà utilisé grep, mais le problème c'est que je ne sais pas comment ligne la ligne qui suit en faisant ainsi. Si c'est possible de récupérer les lignes qui suivent la valeur récupérée par grep, ce serait bien aussi.

    Enfin je connais pas trop la lecture des fichiers Unix, si vous pouviez m'aiguiller la dessus.

    Merci
    Mat

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    tu as essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       ${ligne#*=}
       ${ligne%=*}
    pour splitter la variable en 2 ;-)

Discussions similaires

  1. [SHELL] Opération sur chaine de caractère
    Par chleuh dans le forum Linux
    Réponses: 5
    Dernier message: 20/08/2010, 15h04
  2. Travail sur chaines de caractères
    Par g.greg45 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2006, 19h11
  3. [Tableaux] Opération sur chaîne de caractères
    Par kespy13 dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2006, 14h32
  4. Travail sur chaine de caractère
    Par corben dallas dans le forum Access
    Réponses: 4
    Dernier message: 02/01/2006, 19h22
  5. [Debutant][Tableau] Tableau indexé sur chaine de caractères
    Par SamRay1024 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 11h14

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