Forum Programmation.shell Ecrire des espaces dans un fichier plat ?

Posté par  .
Étiquettes : aucune
0
19
mai
2005
Bonjour,

ma question est peut-etre totalement stupide, mais comme je viens de passer deja 2 jours a chercher...

Voila, je dois ecrire un fichier plat avec des lignes d'un certain nombre de caracteres a chaque fois.
Pour cela, je dois completer mes lignes avec des espaces.

Pour l'instant, je procede de la facon suivante:
Je genere mes lignes en concatenant dans une variable, puis je fais un echo $var vers mon_fichier_plat

Inconvenient, les espaces en fin de ligne ne sont pas conservés.
Idem si j'ai une variable ne contenant qu'un espace, elle n'est pas prise en compte...
ex:
space=" "
var="toto"
echo $space$space$space$var$space$space$space
me donne juste "toto" et non " toto ".

Comment puis-je faire?

Merci d'avance.

Je suis en shell ksh sous SunOs 5.9
  • # Avec des "quotes"

    Posté par  (site web personnel) . Évalué à 4.

    echo "$space$space$space$var$space$space$space"

    ça marche normalement

    https://damien.pobel.fr

    • [^] # Re: Avec des "quotes"

      Posté par  . Évalué à 0.

      Exact, j'ai eu le même genre de problème, avec des variables contenant des retours à la ligne.
      J'ai passé de bonnes heures à comprendre pourquoi elle disparaissaient, et il faut en effet ajouter les doubles quotes sinon ça passe pas !

      Donc, toujours faire 'echo "$var"' à la place de 'echo $var'

      ;-]
    • [^] # Re: Avec des "quotes"

      Posté par  . Évalué à 1.

      MERCI!

      oui, ca marche parfaitement...
      C'etait vraiment très bête ;)

      merci encore!
  • # Une solution possible en Perl

    Posté par  . Évalué à 1.

    Si ton fichier initial est foobar, essaye :

    cat foobar | perl -ne 'chomp; $_ .= (" "x10); print substr($_, 0, 10)."\n";'

    Ca devrait fonctionner (ici, tu as le cas particulier avec un padding à 10 caractères... tu peux modifier les 10 en ce que tu veux).
  • # autre idee non testee

    Posté par  (site web personnel) . Évalué à 0.

    LL=80
    chain = `echo "$v1 $v2"`
    n=`echo "$chain" | wc -c`

    echo "$chain" >>file
    while [ n -lt $LL ]
    do
    echo " " >>file
    n=$(($n+1))
    done

    tres crade, mais plein de tips a usage futur ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.