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 :

comment ecrire une tabulation dans une ligne


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 37
    Points
    37
    Par défaut comment ecrire une tabulation dans une ligne
    Bonjour,
    je travaille sur un projet sur unix HPUX et je dois programmé un script qui lira un fichier texte formaté de la manière suivante

    champ1 champ2 champ3 champ4
    1 bla bla 245
    2 bla bla 246

    mon script doit lire la valeur du 4eme champ et l'utiliser en tant qu'argument avec une autre commande, le résultat de cette commande doit etre ajouté a la fain de la ligne en créant un nouveau champ5
    le séparateur des fichiers est le caractère tabulation
    j'arrive a prendre la valeur et éxecuter la commande mais je ne sais pas comment ajouter un caractère tabulation en fin de ligne. par la suite je rediriger le tout vers un nouveau fichier qui contiendera tous les champs

    Merci pour votre aide

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 37
    Points
    37
    Par défaut je n'arrive pas a extraire la ligne
    Analysez SVP ce code parce qu'il me génére une erreur de l'execution de tail:
    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/ksh
     
    c=`wc -l < list_session`
    nlignes=`wc -l < list_session`
    i=1;
    echo $i;
    echo $nlignes;
     
    while test $i -le $nlignes
    do
    echo "boucl";
    ligne=`tail -$c list_session | head -1`;
    idsession=`tail -$c list_session | head -1|cut -f 22`;
     
    echo $idsession;
    c=`expr $c -1`;
    i=`expr $i + 1`;
    echo $i;
    done
    et voila l'erreur qui se répéte dans la boucle :

    82
    boucl
    tail: cannot open input
    error: No such file or directory on file -
    tail: cannot open input
    error: No such file or directory on file -

    83
    boucl
    Usage: tail [-f] [-b number] [file]
    tail [-f] [-c number] [file]
    tail [-f] [-n number] [file]
    Obsolescent usage: tail [+-[n][l|b|c]] [-f] [file]
    Usage: tail [-f] [-b number] [file]
    tail [-f] [-c number] [file]
    tail [-f] [-n number] [file]
    Obsolescent usage: tail [+-[n][l|b|c]] [-f] [file]

    expr: Syntax error

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in $(seq $nlignes)
    est quand meme plus simple que ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while test $i -le $nlignes
    enfin bref chacun ses gouts

    sinon en ksh on ne fait pas
    mais plutot

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    et pour répondre a ta première question en reprenant ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #! /bin/ksh
     
    c=`wc -l < ~/fsqfsd`
    nlignes=`wc -l < ~/fsqfsd`
     
    for i in $(seq $nlignes)
    do
    ligne=`tail -$c ~/fsqfsd | head -1`
    idsession=`tail -$c ~/fsqfsd | head -1|cut -d' ' -f4`
    return=" $?"
    new_ligne=$ligne$return
    echo $new_ligne
    let c=c-1
    done
    => lect_file.sh
    champ1 champ2 champ3 champ4 0
    1 bla bla 245 0
    2 bla bla 246 0

    j ai pris le retour de la commande tail pour exemple

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 726
    Points : 31 046
    Points
    31 046
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ashin Voir le message
    sinon en ksh on ne fait pas
    En plus, cette syntaxe ne peut pas fonctionner
    Là, ça fonctionne !!!

    Citation Envoyé par boulhous Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #! /bin/ksh
     
    c=`wc -l < list_session`
    nlignes=`wc -l < list_session`
    Quel dommage de faire 2 fois un même traitement !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #! /bin/ksh
     
    c=`wc -l < list_session`
    nlignes=$c
    Citation Envoyé par boulhous Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne=`tail -$c list_session | head -1`;
    idsession=`tail -$c list_session | head -1|cut -f 22`;
    Même remarque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne=`tail -$c list_session | head -1`;
    idsession=`echo $ligne|cut -f 22`;

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 589
    Points : 19 473
    Points
    19 473
    Par défaut
    Y a-t-il une raison implicite, que je n'aurais pas décelée, pour ne pas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #! /bin/ksh
     
    while read line; do
       idsession=$(cut -f4 <<<"$line")
       echo $idsession
    # ...
    done < list_session.dat
    ...
    ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    mise a part que ça ne fonctionne pas

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 37
    Points
    37
    Par défaut
    Merci Ashin pour ta réponse, et merci a vous tous
    mais est ce que c'est un caractère tabulation ou c'est juste un espace sur ce code la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    return=" $?"
    new_ligne=$ligne$return
    echo $new_ligne
    et faut il pas ecrire un caractère spécial pour la tabulation
    Merci

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    désolé j'avais mal lu:


    En reprenant l'exemple de N_Bah:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #! /bin/ksh
     
    while read line; do
       idsession=$(echo $line | cut -f4)
       commande $idsession
       new_ligne="$ligne\t$?"
    done < list_session.dat

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 37
    Points
    37
    Par défaut MErci a tous pour votre aide, je suis sauvé
    Merci ashin et merci a tous pour votre aide,
    je suis sauvé.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 589
    Points : 19 473
    Points
    19 473
    Par défaut
    Comment ça, "ça ne fonctionne pas" ?
    Citation Envoyé par man ksh
    <<<word
    A short form of here document in which word becomes the contents of the here-document after any parameter expansion, command substitution, and arithmetic substitution occur.
    ksh --version sh (AT&T Research) 93s+ 2008-01-31

    Mais en fait, sans délimiteur, même avec echo ça marche pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       idsession=$(cut -d'        ' -f4 <<<"$line")
    veuillez lire une tabulation entre "-d'" et "'"

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    Avec une version récente peut être mais pas la mienne en tout cas , faut dire du ksh j'en fais pas tous les jours.


    Pour le délimiteur je sais pas, perso j en mets toujours un

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2015, 17h52
  2. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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