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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [SHELL] jointure entre 2 fichiers (Résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SHELL] jointure entre 2 fichiers (Résolu)

n°1387255
zoul72
Posté le 23-02-2016 à 15:39:37  profilanswer
 

Bonjour,
 
Je suis débutant en shell. :whistle:  :sweat:  
 
J'ai 2 fichiers que l'on va appeler fica et ficb
dans le fica, j'ai une référence sur 32 caractères.
 
Mon but est de ressortir toutes les lignes de ficb qui contiennent les références présentes dans fica
 
J'ai réussi à trier mon fica
 
J'ai 2 soucis :
1) dans ficb cette référence se trouve en position 90
je fais la commande suivante : sort -90 +122 ficb > ficb_trie
mais cela ne trie pas mon fichier
 
2) j'ai essayer malgrè le fiat que le fichier ficb ne soit pas trié plusieurs options de join mais je n'ai rien en sortie.  
join fica ficb > result
join -j11 fica ficb > result
 
Est-ce qu'un pro peu m'aider svp ?
 
D'avance Merci


Message édité par zoul72 le 24-02-2016 à 15:20:07
mood
Publicité
Posté le 23-02-2016 à 15:39:37  profilanswer
 

n°1387267
kuroineko_​fr
meme le chene fut un gland
Posté le 23-02-2016 à 19:35:30  profilanswer
 

tu peux faire une boucle
 
 
tant que lecture
faire
pourligne chercher pattern dans ficb
fin injection fica
 
ne pas prendre peur  

francois@:~$ echo a > fica
francois@:~$ echo b >> fica
francois@:~$ echo c >> fica
francois@:~$ echo b >> ficb
francois@:~$ # dans l exemple y aura qu 1 retour (b)  
francois@:~$  
francois@:~$ while read
> do
> echo $REPLY
> grep $REPLY ficb
> done < fica > result
francois@:~$ cat result
a
b
b
c
francois@:~$ rm fic{a,b} result
francois@:~$  


 
 
$REPLY est la varable de read  
 
on a bien un fichier resultat avec a b c venant de fica et surtout le b de ficb  qui ont bien fusionnes
 
si tu narrives pas a adapter tu poux donner un exemple de ligne de chaque fichier  
 et le resultat voulu ..  :hello:  
 
J'ai 2 soucis :
1) dans ficb cette référence se trouve en position 90
avec ta methode tu est obliger de connaitre la position... grep cherche un pattern sans specifier de position
 
2) j'ai essayer malgrè le fiat que le fichier ficb ne soit pas trié plusieurs options de join mais je n'ai rien en sortie.  
vu ton besoin un fichier resultat etait bien la bonne solution mais un join ...pas sur
 
 
 
 

n°1387288
watael
Posté le 24-02-2016 à 03:19:32  profilanswer
 

salut,
 
ce serait quand même plus clair avec un échantillon représentatif des deux fichiers, et la sortie attendu pour l'échantillon.

n°1387300
zoul72
Posté le 24-02-2016 à 11:38:47  profilanswer
 

Merci pour vos réponses

 

par exemple dans le fica j'ai la plus part du temps 7 chiffres suivis d'espaces mais la zone réservée est sur 32 alphanumérique:


1234567                                  

 

dans ficb j'ai :


A123456789BC                   012345678901230011234567                         00reste du fichier
ma référence se trouve ici     |------------------------|

 

J'ai testé ce que kuroineko_fr a donné(en enlevant le "echo $REPLY" )  mais dans le fichier résultat, je n'ai que la dernière occurrence trouvée.

 

J'ai essayé de déplacé la redirection vers le fichier Résultat :

 

while read
do
 grep $REPLY Ficb > Res
done < Fica

 

J'ai des lignes blanches et la dernière occurrence trouvée.


Message édité par black_lord le 24-02-2016 à 13:42:14
n°1387303
kuroineko_​fr
meme le chene fut un gland
Posté le 24-02-2016 à 12:16:09  profilanswer
 

oui ma faute j ai pas explique ca... :pt1cable:  dans lexemple  avais qu un resultat attendu
 
 
>>  alimente le fichier  
> creer un nouveau fichier
 
 
donc avec un >>  apres le grep ca devrait aller
 
:hello:

n°1387308
zoul72
Posté le 24-02-2016 à 14:21:03  profilanswer
 

J'ai toujours le même problème : grep ne trouve que la dernière occurrence alors que je sais que tout ce qui est dans mon fica est présent dans ficb
J'ai trouvé que le résultat de la dernière commande exécutée est dans la variable $?
 

Citation :


while read
do
 echo $REPLY
 grep $REPLY Ficb >> Res
 echo $?
done < Fica


 
 
J'ai ca en résultat, il n'y a que la dernière ligne qui est trouvée!

Citation :


9737019
1
9813733
1
9816351
1
9824721
0


Message édité par zoul72 le 24-02-2016 à 14:22:18
n°1387310
zoul72
Posté le 24-02-2016 à 15:01:46  profilanswer
 

J'ai modifié mon fichier Fica de plusieurs façon pour arriver à ce que le grep ne trouve rien ! :cry:  
 
J'utilise ultraedit en ftp pour créer et modifier mes fichiers.
 
Est-ce que mon problème ne viendrai pas de là avec des histoire de caractères de fin de ligne ou fin de fichier spécifique à unix ?
 
en vue Hexa, j'ai 0D et 0A  en fin de chaque ligne sauf la dernière qui est 0A  :pt1cable:


Message édité par zoul72 le 24-02-2016 à 15:04:52
n°1387311
zoul72
Posté le 24-02-2016 à 15:19:48  profilanswer
 

:bounce:  :bounce:  :bounce:  
 
Trouvé !
 
J'ai sauvegardé mon fichier source en ASCII au lieu de binaire avec ultra edit et j'ai trouvé toutes mes références !
 
Merci beaucoup pour l'aide !

n°1387330
kuroineko_​fr
meme le chene fut un gland
Posté le 24-02-2016 à 18:29:47  profilanswer
 

bien vu
:D :sol:


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

  [SHELL] jointure entre 2 fichiers (Résolu)

 

Sujets relatifs
Outil de sauvegarde fichiers + mysql : vos avis ?Tester la présence de fichiers dans un répertoire
Récupération de données sur système de fichiers VFAT,FAT32Problème Bluetooth Ubuntu: transfert de fichiers impossible
Liste ordonnée des fichiers pour comprendre et exploiter Gnu/LinuxQuelle distribution, quel système de fichiers ?
Script BASH pour suppression fichiers multiples (même nom) dans arbo ?[shell command] rediriger vers un fichier date_nomé
Fichiers de configuration Postfix partagésscript pour renommer des fichiers de maniere recursive
Plus de sujets relatifs à : [SHELL] jointure entre 2 fichiers (Résolu)



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR