Script sous Unix

Natacha -  
jisisv Messages postés 3678 Statut Modérateur -
Bonjour,

Je suis vraiment débutante sous Unix et j'aimerai créer un script Unix mais malheureusement j'y comprends rien.
Voici ma question:
Comment créer un script qui me permettrai de remplacer dans un fichier ascii tous les caractères ";" par des "espace". Vous allez me dire facile, il existe une commande "remplacer" dans le menu mais je voudrais qu'un script le fasse pour un nbre important de fichiers placés dans un même répertoire et qu'il m'enregistre les fichiers modifiés dans ce même répertoire. Connaissez-vous un script proche de celui ci qui pourrait m'aider.

Merci d'avance

Nat

11 réponses

  1. jisisv Messages postés 3678 Statut Modérateur 936
     
    Quelques précisions:

    Ceci peut résumer la situation
    johand@horus:~/src/bash$ cat > bidon
    #! /bin/sh
    cat | tr ";" " "
    ^D
    johand@horus:~/src/bash$ chmod +x semicol2space
    johand@horus:~/src/bash$ cat bidon
    ab;cd
    efg;hij;
    ;toto
    johand@horus:~/src/bash$ ./semicol2space < bidon
    ab cd
    efg hij_
    _toto
    # _ représente ici un espace en début ou fin de chaîne

    Tu as donc créé un filtre "semicol2space" qui transforme l'entrée
    standard et l'expédie vers stdout (la console par défaut
    L'extension de l'exécutable n'a aucune importance dans les UNICES.
    Ton fichier semicol2space doit
    -être exécutable (sauf utilisaton de la commande interne "." ou source)
    -référencer l'interpréteur de commande (ici /bin/sh)
    dans la ligne bang (commençant par #!)
    johand@horus:~/src/bash$ file /bin/sh
    /bin/sh: symbolic link to `bash'
    qui est un lien symbolique vers bash

    Bon, tu intègres le corps du fichier dans ton script/tu en fais une fonction bash/....

    Il est sous-entendu que tu utilises bash comme interpréteur .
    CU later

    Johan
    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    2
  2. grofwa Messages postés 440 Statut Membre 479
     
    Salut

    Essaie ceci :
    cat fichier_ascii | tr ";" " "

    Michael.

    Ne vous souciez pas de n'être pas remarqué ; cherchez 
    plutôt à faire quelque chose de remarquable [Confucius]
    0
  3. Natacha
     
    Quelle doit être l'extension d'un fichier script?
    0
  4. Natacha
     
    Bonjour jisisv,

    Je vais passer pour une bonne à rien mais je voulais comprendre ce que tu as écrit (tu as l'air très bon!!!). Je dois replacer quoi oar quoi? Mon repertoire ou se trouve mes fichiers ascii à modifier est /users/natacha/test. Mes fichiers sont des txt.

    Désolé de poser toutes ces questions mais ce petit script va vraiment m'aider.

    Encore merci

    Nat
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Natacha
     
    Quelle est la ligne de commande pour lancer le script en question?
    0
  7. jisisv Messages postés 3678 Statut Modérateur 936
     
    A quoi ta commande "remplacer" fait elle référence?
    As-tu une bonne maîtrise (lue of course) de l'anglais?
    Ta question est-elle extraîte d'un TP?
    ....

    Johan

    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    0
  8. jisisv Messages postés 3678 Statut Modérateur 936
     
    A quoi ta commande "remplacer" fait elle référence?
    As-tu une bonne maîtrise (lue of course) de l'anglais?
    Ta question est-elle extraite d'un TP?
    ....
    Si tu connais les extensions des fichiers (txt inf)

    Un truc basique; pas testé...

    for myfile in $(find . -maxdepth 1 -type f -name "*txt" -or -name "*inf") ;
    do
    semicol2space < $file > ${file}.new
    done

    exksplikacionz:

    -maxdepth limite les recherches à un niveau dans l'arborescence
    (donc le répertoire courant)
    -name extensions des fichiers
    -or ou inclusif
    -for regarde bash help for
    - < redirection de $file vers l'entrée standard
    - > redirection de l'output vers le fichier ${file}.new
    J'utilise ici une syntaxe bash assez stricte pour la redirection ${file} au lieu de
    $file

    Tu peux chercher des explications sous
    help (sous bash)
    man bash
    man find

    En cherchant sous Google tu trouveras des tutoraiaux en français sur
    find, tr et consorts.
    (la langue française n'étant jamais un crière de choix pour moi)

    Johan

    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    0
  9. Natacha
     
    J'ai bien compris tes dernières commandes mais je n'arrive pas à créer le fichier qui compose ce script. Je suppose qu'il doit avoir une extension "executable"??

    Merci

    Nat

    P.S: Ce n'est pas pour un TP mais dans le cadre de mon travail. Ce script qui est sûrement le beaba pour un connaisseur me permettra de modifier des fichiers rapidement afin de travailler dessus le plus tôt possible.
    0
  10. grofwa Messages postés 440 Statut Membre 479
     
    Salut,

    Il n'y a pas d'extension pour rendre ton script exécutable.
    Il faut lui changer les droits d'accès :
    chmod +x ton_script

    Michael.

    Ne vous souciez pas de n'être pas remarqué ; cherchez 
    plutôt à faire quelque chose de remarquable [Confucius]
    0
  11. Natacha
     
    Vous allez vouloir me tuer mais lorsque je lance le script il me marque:

    find : option -maxdeph erronée
    0
  12. jisisv Messages postés 3678 Statut Modérateur 936
     
    s/maxdeph/maxdepth/

    C'est bien maxdepth qu'il faut lire

    Gates gave you the windows.
    GNU gave us the whole house.(Alexandrin)
    0