Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2903 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Recherche Occurences dans des fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recherche Occurences dans des fichiers

n°952696
vrobaina
Hecho a Mano
Posté le 12-09-2007 à 11:23:03  profilanswer
 

bonjour n'etant pas un pro du shell, je n'arrive pas à trouver pourquoi le script suivant ne fonctionne pas.
 
Le but :  rechercher (et lister) dans un repertoire certaines occurences contenues dans des fichiers. Les occurences trouvées sont stockées dans un fichier (occurence.txt)
 
 
voici le script :
 
#!/bin/sh
#
cd  /opt/lesfichiers
for MONFIC in `cat /opt/mesoccurences.txt`
do
     echo $MONFIC
     grep -l $MONFIC *
     RC=$?
     echo $RC
     if [ $RC -eq 0 ]
     then
       echo $MONFIC >> /opt/trouve.txt
     else
       echo $MONFIC >> /opt/pastrouve.txt
     fi
done
 
####################
 
 
le soucis est que ce scripts ne me trouve aucune occurence alors que je sais (en lançant à la main le grep) qu'il y en a.
 
 
Pourriez-vous me dire ou se trouve l'erreur ?.
 
Merci d'avance,
Vegas.
 
 
 
 


---------------
Les cons, ça ose tout, et c'est même à ça qu'on les reconnait....
mood
Publicité
Posté le 12-09-2007 à 11:23:03  profilanswer
 

n°952911
arghbis
salops de dauphins
Posté le 12-09-2007 à 18:50:38  profilanswer
 

rajoute un set -x en début de script pour avoir du debug.
 
Je dirais, à première vue : soit il trouve pas le fichier sur lequel il doit faire le grep, soit la regexp est mal interprêtée (penser à l'option -e)

n°952924
vrobaina
Hecho a Mano
Posté le 12-09-2007 à 19:14:27  profilanswer
 

ce qui est etonnant, quand je met le mode debug :  
la ligne grep est en fait :
 
grep -l $'occurence1\r' fichier1.txt
 
et pas  
 
grep -l occurence1 fichier1.txt
 


---------------
Les cons, ça ose tout, et c'est même à ça qu'on les reconnait....
n°952925
o'gure
Modérateur
Multi grognon de B_L
Posté le 12-09-2007 à 19:16:12  profilanswer
 

parce que dans ton fichier /opt/mesoccurences.txt chaque fin ligne est symbolisée par un '\r'


---------------
Relax. Take a deep breath !
n°952943
vrobaina
Hecho a Mano
Posté le 12-09-2007 à 20:24:14  profilanswer
 

non justement dans mon fichier occurence les mots sont placés les uns sous les autres :
 
tutu
titi
..
..
..
toto
tata
 
il n'y a pas de /r


---------------
Les cons, ça ose tout, et c'est même à ça qu'on les reconnait....
n°952944
o'gure
Modérateur
Multi grognon de B_L
Posté le 12-09-2007 à 20:31:16  profilanswer
 

C'est bien ce que je dit... :heink:

 

'\r' est le caractère RETOUR CHARIOT. Généralement sous unix on utilise seulement \n pour signaler un retour à la ligne. Seulement sous certaines applications (généralement sous windows) il y a 2 caractères : \r   ET  \n. \r pour indiquer que le chariot retourne au début de la ligne et \n pour indiquer qu'on passe a la ligne suivante. Sous unix généralement on a seulement \n => on passe a la ligne suivante et on retourne au début de la ligne

 

Je veux dire par la que dans ton fichier pour signaler la fin de la ligne tu as \r \n à chaque fin de ligne. le read détecte le \n pour la fin de ligne et donc l'omet quand il le passe à ta variable mais \r est pour lui un caractère classique.
ton fichier est en fait
tutu\r\n
titi\r\n
...\r\n
toto\r\n

 

tu n'as qu'a faire un hexdump de ton fichier pour voir TOUS les caractères. à la place des \r\n tu auras 0x0D  0x0A   à chaque fin de ligne

 


Table ASCII   Retour à la ligne

 

La solution est d'enlever tous les \r qui ne servent à rien. Tu as plusieurs technique. Un coup de sed ou un coup de dos2unix


Message édité par o'gure le 12-09-2007 à 20:50:15

---------------
Relax. Take a deep breath !
n°953142
vrobaina
Hecho a Mano
Posté le 13-09-2007 à 15:15:05  profilanswer
 

Merci beaucoup.
 
tu m'as bien depanné.
 


---------------
Les cons, ça ose tout, et c'est même à ça qu'on les reconnait....

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Recherche Occurences dans des fichiers

 

Sujets relatifs
traitement de fichiers[Mandriva 2007.1 Spring] Recherche de RPM pour apache 1.x
Renommer des fichiers contenant abc1 en abc2Problème avec Apache 2 et Reverse Proxying: 404 sur quelques fichiers
Fichiers égarés à replacer dans i386copier dossiers et fichiers windows NTFS VIA LINUX possible ?
[FC6] Serveur de Fichiers SAMBARecherche " Explorateur Windows " Like pour Debian
Droits sur les fichiers créés par un processus [Résolu][SVN] Exécution locale des fichiers du depot
Plus de sujets relatifs à : Recherche Occurences dans des fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR