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 :

Equivalent de la fonction str_pad de PHP en shell


Sujet :

Linux

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 198
    Points : 121
    Points
    121
    Par défaut Equivalent de la fonction str_pad de PHP en shell
    Bonjour,
    Je viens d'écrire un script que voici :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #!/bin/ksh
    # --------------------------------------------------------#
    # Affiche les jobs en START
    # --------------------------------------------------------#
    TEMPFILE=/tmp/tmp_file
    PRINTFILE=/tmp/tmp_result_file
    
    cautil select tjob id=*,*,* runstat=start list tjob|awk '/Jobset:/,/End:/'|grep -v TJOB > $TEMPFILE
    
    awk ' /Jobset/ {
         jobset=$2 ; nb=NF ; getline ;  # jobset
         job=$2 ;    nb=NF ; getline ;  # job
         qual=$4 ;   nb=NF ; getline ;  # qualifier
         nb=NF ;     getline ;
         $1 = "" ;   desc=$0 ; nb=NF ;  getline ; # description
         if ($3 ~ /START/)  { etat="START"    } ; nb=NF ; getline ; # Calendar
         nb=NF   ; getline ;             # LIGNE 08 Actual Queue
         nb=NF   ; getline ;             # LIGNE 09 Anycpu
         nb=NF   ; getline ;             # LIGNE 10 Priority
         nb=NF   ; getline ;             # LIGNE 11 Job Type
         nb=NF   ; getline ;             # LIGNE 12 Abend action
         nb=NF   ; getline ;             # LIGNE 13 Abort Count
         nb=NF   ; getline ;             # LIGNE 14 Scheduled
         nb=NF   ; getline ;             # LIGNE 15 early
         nb=NF   ; getline ;             # LIGNE 16 Must Start
         nb=NF   ; getline ;             # LIGNE 17 Start and End
         StartD=$2 ; StartT=$3 ;
         if ( nb > 1 ) { printf("\t [ %-s.%-s ]  [ %-s ]   [ %-s ]  [%-s ]  [ %-s ]  [ %-s ]\n",jobset,job,qual,etat,desc,StartD,StartT) }
         }
    END {} ' $TEMPFILE > $PRINTFILE
    cat $PRINTFILE
    
    Le résultat retourné est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    [ pared000.pared ]  [ 0301 ]   [ START ]  [ Generation echeancier niveau ]  [ 11/03/2007 ]  [ 05:50:29.00 ]
    [ psybc000.psyckbar ]  [ 0301 ]   [ START ]  [ BCV Arpege : Check derniere synchro ]  [ 11/03/2007 ]  [ 07:30:24.00 ]
    
    Ce que je cherche à faire c'est aligner correctement les colonnes dans mon résultat. Je cherche donc l'équivalent de la fonction str_pad() de php mais en shell et si inexistante quelle serait la méthode pour y arriver.
    Merci de votre aide

    Stéphane

  2. #2
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Dans ton awk, il te suffit de faire tes "printf" comme suit :

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            jobset="pared01"
            job="pared"
            printf("\t [ %8s.%-8s ] \n",jobset,job)
     
            jobset="pared010"
            job="psyckbar"
            printf("\t [ %8s.%-8s ] \n",jobset,job)

    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
             [  pared01.pared    ] 
             [ pared010.psyckbar ]

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 198
    Points : 121
    Points
    121
    Par défaut
    Merci pour ta réponse, c'est tout à fait ce qu'il me fallait

    Stéphane

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

Discussions similaires

  1. Equivalent HTML à la fonction Include du PHP ?
    Par souffle56 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/08/2009, 22h27
  2. Equivalent de la fonction php time() ?
    Par Coussati dans le forum Langage
    Réponses: 6
    Dernier message: 03/04/2009, 13h51
  3. [Tableaux] Equivalent d'une fonction en php
    Par Wimoux dans le forum Langage
    Réponses: 3
    Dernier message: 15/04/2008, 03h03
  4. equivalent de la fonction EXPLODE de php
    Par gyouk dans le forum ASP
    Réponses: 1
    Dernier message: 28/11/2005, 10h49
  5. Equivalent de la fonction trim
    Par PCHINK dans le forum C
    Réponses: 6
    Dernier message: 21/03/2004, 18h02

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