Téléchargement
illégal
Posez votre question Signaler

Pb script unix pour faire un grep ds 1 while [Résolu]

mounou2301 - Dernière réponse le 15 janv. 2012 à 11:01
Bonjour
Étant novice sur les commandes unix je vous expose mon souci,
je dois rechercher dans un répertoire qui contient des fichiers csv un ensemble de valeurs.
Par exemple si je me positionne dans le répertoire où sont les fichiers csv et que je saisis la commande :
grep 123456 *.csv puis enter alors j'obtiens bien en sortie standard la liste des lignes des fichiers csv dans lesquelles figure la valeur 123456
Je souhaite maintenant automatiser ce process, j'ai donc écrit un script pour lire un ensemble de valeurs contenues dans un fichier texte puis pour chacune d'entre elles faire le grep afin de la rechercher dans les fichier csv et écrire la sortie standard dans un fichier texte, voici le script
#!/bin/sh
ext=*.csv
res=resultat.txt
while read line
do
grep $line $fic$ext >> $res 2>1;
done < liste_dossiers.txt
liste_dossiers.txt contient la liste de valeurs à chercher
et resultat.txt contient les lignes trouvées dans les fichiers csv.
Le problème est que j'obtiens toujours à l'exécution un fichier resultat.txt qui est vide je ne comprends pas pourquoi
Auriez vous une idée ?
Merci pour votre aide
Lire la suite 

Pb script unix pour faire un grep ds 1 while »

9 réponses
Réponse
+0
moins plus
Salut,

C'est le "$fic" dans "grep $line $fic$ext >> $res 2>1; " ?
il n'est initialisé nulle part ;-\

Un petit conseil. les variables lorsqu'elles sont concaténées, il vaut mieux les écrire "${fic}${ext}" ;-))
zipe31- 15 janv. 2012 à 10:40
Merci d'afficher le résultat des commandes demandées et de répondre aux questions, sans quoi on risque de tourner longtemps en rond ;-(

J'ai même rajouté un echo $line avant le grep dans la boucle : à l'exécution il m'affiche bien toutes les valeurs du fichier liste_dossiers.txt
Une par une j'espère ;-\
mounou2301 - 15 janv. 2012 à 10:59
désolé de ne pas avoir répondu correctement

j'ai fait la commande cat -A liste_dossiers.txt et ca m'a mis sur la bonne voie :)
en effet le resultat affichait
8182970^M$
8184202^M$
8186894^M$

et c'est là que j'ai compris que le fichier liste_dossiers.txt n'était pas au bon format.
Il était au format DOS : (CRLF en fin de ligne)

Je l'ai mis au bon format et bingo , ma boucle marche!

Merci pour ton aide!
zipe31- 15 janv. 2012 à 11:01
Ben voilà ;-))
Ajouter un commentaire
Ce document intitulé « Pb script unix pour faire un grep ds 1 while » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?