Rechercher : dans
Par :

Script sous Unix

Dernière réponse le 22 mai 2007 à 17:49:49 Natacha, le 2 aoû 2004 à 16:33:19 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Script sous Unix » dans :
Sed - Introduction à SED - Part III VoirSED - The Stream EDitor - Part III Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
UNIX - Les fichiers VoirIntroduction aux fichiers Unix Sous les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». Types de...
Formats et extensions de fichiers VoirQu'est-ce qu'un type MIME ? Le type MIME (Multipurpose Internet Mail Extensions) est un standard qui a été proposé par les laboratoires Bell Communications en 1991 afin d'étendre les possibilités du courrier électronique (mail), c'est-à-dire de...

1

grofwa, le 2 aoû 2004 à 16:42:40

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]

Répondre à grofwa

2

Natacha, le 2 aoû 2004 à 18:00:45

Quelle doit être l'extension d'un fichier script?

Répondre à Natacha

3

jisisv, le 2 aoû 2004 à 18:17:31

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)

Répondre à jisisv

4

Natacha, le 2 aoû 2004 à 18:39:05

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

Répondre à Natacha

5

Natacha, le 2 aoû 2004 à 19:11:57

Quelle est la ligne de commande pour lancer le script en question?

Répondre à Natacha

6

jisisv, le 2 aoû 2004 à 19:12:21

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)

Répondre à jisisv

7

jisisv, le 2 aoû 2004 à 19:28:30

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)

Répondre à jisisv

8

Natacha, le 3 aoû 2004 à 10:44:42

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.

Répondre à Natacha

9

grofwa, le 3 aoû 2004 à 11:33:16

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]

Répondre à grofwa

10

Natacha, le 3 aoû 2004 à 17:10:27

Vous allez vouloir me tuer mais lorsque je lance le script il me marque:

find : option -maxdeph erronée

Répondre à Natacha

11

 jisisv, le 4 aoû 2004 à 01:27:15

S/maxdeph/maxdepth/

C'est bien maxdepth qu'il faut lire

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

Répondre à jisisv