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 :

Comment decouper un text


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut Comment decouper un text
    Bonjour

    j'ai un fichier avec

    le textsuivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    000MA      02241000B65D05MU
    010AT456 QQ9
    070 Ter
    ....

    Je lis le fichier entrée comme paramètre avec une boucle while


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Acquisition du parametre
    FIC_IN=$1
     
    #Extraction des données du fichier logique
    while read ligne
     do
    	#echo $ligne 
        zone_9=`echo $ligne | cut -c 6-19`   
    done < $FIC_IN
    est lors de la lecture de la premier line
    renvoi -->02241000B65D0


    Saleté de "cut -c" avec les espace .... quelle solution?

    Comment puis-je trouver la réalité des données incluent dans le fichier , qu'il y ai des espace ou pas?
    Comment puis-je découper ce fichier 'un équivalent du substring ' ? sachant sauf erreur sur le shell du système d'exploitation utiliser dans ce cas la commande substring ne semble pas?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    quelle solution pour faire quoi ?
    quel résultat attends-tu ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut resultalt attendu
    bonjour,

    si l'on regarde le contenu de la ligne N° 1 e la position 6 à 19 on a la valeur " 02241000" et non la valeur renvoyer par le cut

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par dedalios Voir le message
    bonjour,

    si l'on regarde le contenu de la ligne N° 1 e la position 6 à 19 on a la valeur " 02241000" et non la valeur renvoyer par le cut
    Si j'ai bien compris (en lisant " 02241000" entre les lignes!), tu aimerais que le cut retourne " 02241000" avec les 6 espaces devant "02241000".
    C'est bien ça?

    Dans ton problème, ce n'est pas "cut" qui est en cause. C'est plutôt que echo $ligne "perd" les espaces!

    Règle de base: sauf si on a une bonne raison de ne pas le faire(*), il vaut mieux encadrer ses variables de guillemets. D'où la réécriture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Acquisition du parametre
    FIC_IN=$1
     
    #Extraction des données du fichier logique
    while read ligne; do
        #echo "${ligne}" 
        zone_9=$(echo "${ligne}" | cut -c 6-19)
        echo "'${zone_9}'" # Pour vérifier
    done < "${FIC_IN}"
    (*) par exemple, dans for element in ${liste}, généralement il ne faut pas de guillemets autour de ${liste}.

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par dedalios Voir le message
    le textsuivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    000MA      02241000B65D05MU
    010AT456 QQ9
    070 Ter
    (...)
    renvoi -->02241000B65D0
    c'est facile: grep -o "02241000B65D0"

    ce qui se conçoit bien s'énonce clairement et les mots pour le dire nous viennent aisément

Discussions similaires

  1. [TWebBrowser] Comment ajouter du texte ?
    Par el_diablos dans le forum Composants VCL
    Réponses: 18
    Dernier message: 06/07/2004, 09h17
  2. [RichEdit] Comment surligner du texte ?
    Par micatmidog dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/06/2004, 13h01
  3. comment inserer du texte?
    Par bakonu dans le forum OpenGL
    Réponses: 2
    Dernier message: 29/04/2004, 13h32
  4. comment ecrire du texte dans une window application
    Par gaut dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/07/2003, 10h23
  5. Comment centrer un Texte dans un rectangle ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 21h56

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