Reserver un nombre de caractere a un champ

Résolu
grisfff -  
 grisfff -
Bonjour,

je debute en shell et j'ai un pti souci a partager ac vous
j'ai en sortie d'un script shell une ligne de la forme:
a | bb | c | ddd | e | f
je voudrai prendre le champ "ddd" lui reserver 7 caractere entre les " | ", en gros le remplacer par " ddd"
sachant ke les champs sont differents a chaque foi

merci
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Il faudrait peut être nous montrer la commande qui formate ta ligne de sortie, non ?

    A la limite nous montrer ton script ainsi que le(s) fichier(s) traité(s) en aval, histoire qu'on sache un peu comment s'y prendre ;-))
    0
  2. grisfff
     
    okey :)

    j'ai un fichier log de plusieur lignes de la meme forme que "a | bb | c | ddd | e | f" sauf que le champ ddd s'ecrit déja sur 7 caractere " a | bb | c | ddd | e | f
    je fait dans mon script

    cat fichier.log | while read ligne
    do
    if #condition pour garder que klk ligne# ; then
    echo $ligne >> fichier2.log
    fi
    done
    echo $(tail -1 fichier2.log) #afin de recuperer la derniere ligne des fichiers gardé

    tout marche bien sauf que dans la ligne recuperé dés quil y a plusieurs espaces qui se suivent ça se réduit en un seul (apparament c'est cat qui fait cela)

    j'espere que j'ai bien resumé la situation
    si vous avez une solution au niveau de cat :) ce serai cool
    sinon si je peu remplacer "ddd" par " ddd"
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    cat fichier.log | while read ligne
    do
    if #condition pour garder que klk ligne# ; then
    echo "$ligne" >> fichier2.log
    fi
    done
    echo $(tail -1 fichier2.log) 
    Ça devrait régler ton problème ;-))
    0
  4. grisfff
     
    oui j'avais pensé a ça ("$ligne") mais rien ne change , les groupements d'espaces sont tjr reduits a un seul ;-/
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    [tmpfs]$ cat plop
    a | bb |  c  |  ddd  |  e | f
    
    [tmpfs]$ cat plop |while read line;do echo $line;done  # sans guillemets
    a | bb | c | ddd | e | f
    
    [tmpfs]$ cat plop |while read line;do echo "$line";done  # avec guillemets
    a | bb |  c  |  ddd  |  e | f
    
    [tmpfs]$
    ;-\
    0
  7. grisfff
     
    ahhhhh ouiiiiiiiiii
    DSL, le probleme vien de echo $(tail -1 fichier2.log)

    bash-3.00$ cat plop.log 
    aaa
    aaa
    a           a                a
    bash-3.00$ echo $(tail -1 plop.log)
    a a a
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    echo "$(tail -1 plop.log)"
    0
  9. grisfff
     
    :-))

    c réglé

    echo "$(tail -1 fichier2.log)"
    0