Parser un fichier csv en bash
Résolu
maxfbt
-
zipe31 Messages postés 38797 Statut Contributeur -
zipe31 Messages postés 38797 Statut Contributeur -
Bonjour,
Comment puis-je scripter en shell ceci :
...en partant du principe que "monoccurence" sera lu dans un fichier csv de plusieurs lignes.
J'ai essayé ça mais :
Le parsing marche mais pas la copie de fichier...
Un petit coup de pouce ne serait pas de refus !
Merci à vous.
Max
Comment puis-je scripter en shell ceci :
find . ! -regex ".*/\..*" -name "monoccurence.xml" -print -exec cp {} ~/Desktop/monrep \;
...en partant du principe que "monoccurence" sera lu dans un fichier csv de plusieurs lignes.
J'ai essayé ça mais :
#!/bin/sh while IFS=';' read monoccurrence do line="$monoccurrence" find . ! -regex ".*/\..*" -name "$monoccurrence" | cp {} ~/Desktop/monrep \; done < fichiersource.csv
Le parsing marche mais pas la copie de fichier...
Un petit coup de pouce ne serait pas de refus !
Merci à vous.
Max
A voir également:
- Bash parse csv
- Bingo bash - Télécharger - Divers Jeux
- Bash permission non accordée - Forum Shell
- Bash pause ✓ - Forum Shell
- Bash list ✓ - Forum Shell
- Bash addition - Forum Programmation
3 réponses
Salut,
Pourquoi tes deux commandes diffèrent ? (le pipe dans la seconde)
A quoi sert le 'line="$monoccurrence"' ?
Pourquoi tes deux commandes diffèrent ? (le pipe dans la seconde)
A quoi sert le 'line="$monoccurrence"' ?
zipe31
Messages postés
38797
Statut
Contributeur
6 433
J'avais oublié... à quoi ressembles les entrées dans le fichier "fichiersource.csv" ?
Merci pour ta réponse zipe31.
J'ai tenté de chaîner l'action de copier les fichiers avec un pipe.
En effet j'ai d'abord testé ça :
Mais ça ne marche pas...
Le csv est composé d'un nom de fichier par ligne (toto.xml, titi.xml, tata.xml, etc.)
Mon script arrive bien à parser mon fichier csv et à trouver un fichier, mais je n'arrive pas exécuter la commande suivante, à savoir copier le fichier trouvé dans mon répertoire local.
J'ai tenté de chaîner l'action de copier les fichiers avec un pipe.
En effet j'ai d'abord testé ça :
#!/bin/sh while IFS=';' read monoccurrence do line="$monoccurrence" find . ! -regex ".*/\..*" -name "$line" -print -exec cp {} ~/Desktop/monrep done < fichiersource.csv
Mais ça ne marche pas...
Le csv est composé d'un nom de fichier par ligne (toto.xml, titi.xml, tata.xml, etc.)
Mon script arrive bien à parser mon fichier csv et à trouver un fichier, mais je n'arrive pas exécuter la commande suivante, à savoir copier le fichier trouvé dans mon répertoire local.
Essaie de rajouter un echo devant la commande "cp" afin de voir ce qui pourrait clocher ;-\
Je me répète : A quoi sert le 'line="$monoccurrence"' ?
#!/bin/sh while IFS=';' read monoccurrence do line="$monoccurrence" find . ! -regex ".*/\..*" -name "$line" -print -exec echo "cp {} ~/Desktop/monrep" done < fichiersource.csv
Je me répète : A quoi sert le 'line="$monoccurrence"' ?