Débutante en script shell
Estelle_23
Messages postés
3
Statut
Membre
-
Estelle_23 Messages postés 3 Statut Membre -
Estelle_23 Messages postés 3 Statut Membre -
Bonjour à tous,
Je suis débutante sous Linux et je vais bientôt passer un concours en informatique.
Je travaille actuellement sur des annales et je manque de temps pour approfondir la programmation bash :
Je dois écrire un script shell qui prend en paramètre un répertoire, puis liste les fichiers en
*.csv ensuite il doit échanger les colonnes 1 et 2 de chacun de ces fichiers et écrire le résultat dans un fichier *.new
j'ai commencé par ça
#!\bin\bash
if [-z $1] then
echo "le répertoire n'existe pas"
fi cd $1 ls _l *.csv
ensuite je dois utiliser awk mais je ne comprends pas très bien.
Merci de votre aide !
Je suis débutante sous Linux et je vais bientôt passer un concours en informatique.
Je travaille actuellement sur des annales et je manque de temps pour approfondir la programmation bash :
Je dois écrire un script shell qui prend en paramètre un répertoire, puis liste les fichiers en
*.csv ensuite il doit échanger les colonnes 1 et 2 de chacun de ces fichiers et écrire le résultat dans un fichier *.new
j'ai commencé par ça
#!\bin\bash
if [-z $1] then
echo "le répertoire n'existe pas"
fi cd $1 ls _l *.csv
ensuite je dois utiliser awk mais je ne comprends pas très bien.
Merci de votre aide !
A voir également:
- Débutante en script shell
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Script cmd - Guide
4 réponses
Bonjour, tu devrais essayer avec les commandes de type "for each" qui te permettront de lancer un traitement particulier sur chaque fichier d'un répertoire.
Ca ressemblerait à
Maintenant faut se concentrer sur le traitement. Je n'ai jamais essayé awk ou autres mais j'y regarderais dès que possible, ça doit pas être sorcier.
Là je suis pas sur ma machine linux je ne peux tester en live mais je te dirais quoi au besoin car je me rappelle d'un exercice plutôt similaire durant les cours.
Ca ressemblerait à
for fichier in $1/*.csv ;
do
traitement "$fichier" ;
done
Maintenant faut se concentrer sur le traitement. Je n'ai jamais essayé awk ou autres mais j'y regarderais dès que possible, ça doit pas être sorcier.
Là je suis pas sur ma machine linux je ne peux tester en live mais je te dirais quoi au besoin car je me rappelle d'un exercice plutôt similaire durant les cours.
Ok, voilà j'ai testé, ce script fonctionne chez moi
Donc je crée un répertoire test qui contient
a.csv
b.csv
Dans ces fichiers csv, il y a :
"a","b","c"
"d","e","f"
En appelant :
./script.sh test
J'obtiens dans le répertoire test :
a.csv.new
b.csv.new
Dans lesquels j'ai bien la deuxième et la première colonne.
#!/bin/bash
if ! [ -d $1 ]; then
echo "Le répertoire $1 n'existe pas."
exit 1
fi
echo "Traitement du répertoire $1"
cd $1
liste='ls *.csv'
for fichier in $liste; do
echo "Traitement du fichier \"$fichier\""
awk -F "," '{print $2, ",", $1}' $fichier >$fichier.new
done
Donc je crée un répertoire test qui contient
a.csv
b.csv
Dans ces fichiers csv, il y a :
"a","b","c"
"d","e","f"
En appelant :
./script.sh test
J'obtiens dans le répertoire test :
a.csv.new
b.csv.new
Dans lesquels j'ai bien la deuxième et la première colonne.