[Bash] convertir les espaces " "

Résolu
Iroboot -  
 Iroboot -
Bonjour,
Cette fois ci j'espere poster dans le bon topic :)

Voila, c'est dans la continuité de mon projet en bash, le dernier programme fonctionne a merveille, je me rapproche de plus en plus de mon objectif final !
J'ai décidé de faire une opération de conversion pas très compliquée : remplacer les espaces " " en espace - point virgule - espace " ; "
Je me suis inspiré d'un script connu qui convertit les espaces en underscore, mais à priori il y a un petit soucis que je n'arrive pas à comprendre, un petit truc qui fait que l'engrenage ne tourne pas rond :

mon script :

#!/bin/bash

cat rapport.txt

for i in " "
do mv "$i" `echo $i | tr " " " ; " `; done

grep $? >> rapport.txt


lorsque je lance le script il, il m'affiche le contenu du fichier rapport.txt et :
mv: missing destination file operand after ` '
Try `mv --help' for more information.


en plus je suis obligé de l'arrêter avec ctrl+C ... Hmmm y a un truc qui cloche vraiment ^^" ...

6 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    [tmpfs]$ cat foo.sh
    #!/bin/bash
    
    cat test.txt
    
    while read line ; do echo ${line// / ; } >> rapport.txt ; done < test.txt
    
    cat rapport.txt
    
    
    
    [tmpfs]$ ./foo.sh
    Mes espaces se trouvent dans un fichier qui se nomme test.txt
    
    Le but étant qu'à partir de ce fichier test.txt :
    
    bonjour je m appel toto
    
    on obtienne un fichier rapport.txt :
    Mes ; espaces ; se ; trouvent ; dans ; un ; fichier ; qui ; se ; nomme ; test.txt
    
    Le ; but ; étant ; qu'à ; partir ; de ; ce ; fichier ; test.txt ; :
    
    bonjour ; je ; m ; appel ; toto
    
    on ; obtienne ; un ; fichier ; rapport.txt ; :
    [tmpfs]$
    Chez moi ça marche très bien ;-\

    T'es sous Linux ? Quelle distrib ?
    1
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Ils sont où tes espaces ? Dans un fichier ? Dans des noms (de fichiers, de répertoires, etc.) ?

    for i in " " ça ne veut rien dire !!!
    0
  3. Iroboot
     
    for i in " " ça ne veut rien dire !!!

    J'pensais qu'en faisant cela, il allait me selectionner tous les espaces de mon fichier =$ ...

    Mes espaces se trouvent dans un fichier qui se nomme (en effet je viens de voir que je ne l'ai pas préciser dans mon script) test.txt

    Le but étant qu'à partir de ce fichier test.txt :

    bonjour je m appel toto

    on obtienne un fichier rapport.txt :

    bonjour ; je ; m ; appel ; toto

    Merci d'avance ;).
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    [tmpfs]$ cat test.txt
    Mes espaces se trouvent dans un fichier qui se nomme test.txt
    
    Le but étant qu'à partir de ce fichier test.txt :
    
    bonjour je m appel toto
    
    on obtienne un fichier rapport.txt :
    
    [tmpfs]$ while read line;do echo ${line// / ; } >> rapport.txt;done < test.txt
    
    [tmpfs]$ cat rapport.txt
    Mes ; espaces ; se ; trouvent ; dans ; un ; fichier ; qui ; se ; nomme ; test.txt
    
    Le ; but ; étant ; qu'à ; partir ; de ; ce ; fichier ; test.txt ; :
    
    bonjour ; je ; m ; appel ; toto
    
    on ; obtienne ; un ; fichier ; rapport.txt ; :
    
    [tmpfs]$  
    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Iroboot
     
    alors si je resume bien tes modifications de script jipicy, je dois avoir :

    #!/bin/bash

    cat test.txt

    while read line ; do echo ${line// / ; } >> rapport.txt ; done < test.txt

    cat rapport.txt


    J'ai essayé et il me sort tous les noms de mes fichiers avec la remarque :
    X ans X are the same file

    j'ai du mal recopier un truc la je sens =$ ...
    0
  7. Iroboot
     
    je suis sous une distrib de bash.

    Etrange ! Je viens de tester cette aprem et la ca marche ! Peut être que mon ancien copier/coller n'avait pas très bien fonctionner ou qu'il y avait un soucis quelque part mystere ... En tout cas merci pour tout ! :D
    0