Script sous Unix
Natacha
-
jisisv Messages postés 3678 Statut Modérateur -
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
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
A voir également:
- Script sous Unix
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
- Fichier executable unix ✓ - Forum MacOS
11 réponses
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)
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)
Salut
Essaie ceci :
Michael.
Ne vous souciez pas de n'être pas remarqué ; cherchez
plutôt à faire quelque chose de remarquable [Confucius]
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]
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)
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)
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)
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)
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.
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.
Salut,
Il n'y a pas d'extension pour rendre ton script exécutable.
Il faut lui changer les droits d'accès :
Michael.
Ne vous souciez pas de n'être pas remarqué ; cherchez
plutôt à faire quelque chose de remarquable [Confucius]
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]