The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > UNIX pour les nuls Questions et réponses
.
google unix.com



UNIX pour les nuls Questions et réponses Si vous ne savez pas où poster un UNIX ou Linux question, post it here. Tous les systèmes UNIX et Linux, débutants bienvenus!

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Communiqués de développement: Linux Mint 4.0 Beta "Fluxbox", 4.0 Alpha "Debian" iBot UNIX et Linux News RSS 0 01-04-2008 03:00 PM
Expliquer la ligne "mn_code \u003d` env | grep "mn .." | awk-F "\u003d" '(print $ 2)' `" Lokesha UNIX pour les nuls Questions et réponses 4 12-20-2007 01:52 AM
N ° utpmx entrée: vous devez exec "login" de plus bas niveau "shell" peterpan UNIX pour les nuls Questions et réponses 0 01-18-2006 04:15 AM
joindre deux lignes lors de la deuxième ligne contient "DOLLAR" powah De programmation et de script Shell 2 10-21-2005 06:30 PM
~ ~ Aide et rejoindre "multijoin" hyo77 De programmation et de script Shell 1 11-19-2003 01:20 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 02-02-2008
aismann aismann is offline
Registered User
  
 

Join Date: Apr 2005
Posts: 37
besoin d'aide pour utiliser "join"

Chers experts,

J'ai un besoin urgent de savoir comment vous joindre à ces 2 fichiers qui correspondent.

J'ai un fichier qui ressemble à
Citation:
1-0-0060122450000
1-0-0060122450001
1-0-0060122450002
1-0-0060122450006
1-0-0060122450007
1-0-0060122450014
1-0-0060122450021
1-0-0060122450024
1-0-0060122450028
1-0-0060122450029
et un autre fichier qui ressemble à
Citation:
0060122000550
0060122000632
0060122001374
0060122004006
0060122004141
0060122004607
0060122011124
0060122014392
0060122014537
i désespérément besoin de savoir comment faire correspondre les 2 fichiers avec l'aide de la deuxième "-" comme un séparateur de champ. Ive été tryong tous les jours je ne peux pas comprendre. S'il vous plaît, aidez!

Sara
  #2 (permalink)  
Old 02-02-2008
H2OBoodle H2OBoodle is offline
Registered User
  
 

Join Date: Jan 2008
Posts: 18
Deux choses:

Je n'ai jamais utilisé rejoindre, vous êtes probablement à obtenir une meilleure réponse de la part de quelqu'un d'autre.

Je n'ai pas trouvé l'énoncé du problème très clair, et en regardant les données n'ont pas grand-chose. Il semble qu'il n'y a pas de points communs entre les données. Par exemple, les premières entrées des deux fichiers censée correspondre?
1-0-0060122450000 0060122000550

00060122 Est-ce que les numéros de ce que vous essayez de joindre le? Si oui, quelle est la sortie désirée après vous?

Quoi qu'il en soit, j'ai expérimenté à rejoindre un peu et a trouvé les résultats peuvent être facilement envoyés par awk simplement imprimer les champs dont vous avez besoin. Peut-être que vous devriez approcher comme ça.

Si vous affichez une description plus détaillée de ce que vous êtes après mai aide.
  #3 (permalink)  
Old 02-02-2008
aismann aismann is offline
Registered User
  
 

Join Date: Apr 2005
Posts: 37
désolé je n'ai pas été précis.
Les deux fichiers sont énormes, plus de 2 millions de dossiers chacun. Mais le format est le même. La seule différence est que l'on a un autre fichier "1-0 -" ou "1.1 -" ou "1.3 -".

Im faire un long chemin en réduisant les caractères de 1-4 et ensuite, avec la pâte et d'y adhérer à nouveau plus tard.

Apprécier si vous pouviez me faire savoir comment le faire en utilisant awk. Merci!

sara
  #4 (permalink)  
Old 02-02-2008
H2OBoodle H2OBoodle is offline
Registered User
  
 

Join Date: Jan 2008
Posts: 18
Eh bien mes hypothèses sur ce que vous essayez de faire ont été mauvais, si mon awk solution pan n'a pas pour moi. Toutefois, je lui ai donné un coup de feu avec un très court script python, et je pense que je mai ont ce qu'il vous faut.

Pour être honnête, on n'a toujours pas me donner une idée claire de ce que vous vouliez votre sortie de l'air, alors voici ce que je suppose. Si je me trompe, alors désolé, ceci est mon dernier coup.

En utilisant les quatre premières lignes de vos données, je pense que vous voulez que cette sortie:
0060122450000 2000550
0060122450001 2000632
0060122450002 2001374
0060122450006 2004006

Le premier numéro est de file_a avec les quatre premiers caractères coupée. Le deuxième numéro est la première valeur déshabiller.

Si cela est correct, alors voici un super simple script python pour obtenir que pour vous:

Nom du script: foo.py

# Ouvrir les fichiers de données
fa \u003d open ( 'file_a', 'rb')
fb \u003d open ( 'file_b', 'rb')

# Aller à travers les fichiers ligne par ligne de décapage de pièces seulement
# Que vous souhaitez conserver. Aussi la bande des nouvelles lignes à partir de la fin.

pour la ligne en fa:
BITA \u003d line [4]. bande ( '\ n')
tmpb \u003d fb.readline (). bande ( '\ n')
# Vous pouvez ajouter un chk ici de veiller à ce tmpb matches BITA. Vous devrez faire bien d'autres hacher. Avec des millions de documents, je le faire.
bitb \u003d tmpb [-7:]
print BITA, bitb

# Fermer les fichiers
fa.close ()
fb.close ()

Exécuter le script comme ceci:
shellPrompt $ python foo.py

Le scénario fait l'hypothèse que vos fichiers de données sont appariées correctement, avec les entrées correspondant à la position sage tout au long. Si elles ne l'êtes pas, alors cela ne fonctionnera pas sans modifications. Vos données seront erronées si les valeurs sont décalées.

Et enfin, il ya probablement plus élégante python shell ou techniques de le faire, mais cela fonctionne.

Bonne chance.

Dernière édition par H2OBoodle; au 02/02/2008 08:18 AM.. Motif: donner plus d'informations sur la façon d'exécuter le script, mettre en garde sur la corruption de données si les données ne sont pas alignés.
  #5 (permalink)  
Old 02-02-2008
vakharia Mahesh vakharia Mahesh is offline
Registered User
  
 

Join Date: Feb 2007
Posts: 51
rejoindre

Aismann
Serez-vous svp préciser ce que vous voulez dans le fichier de sortie? voir à la réussite de
l'exécution de rejoindre commd vous avez besoin sur le terrain doivent être de même longueur
et classés dans le même ordre. c'est-à-dire si les chiffres -> sort-n, et si alfabet
puis -> sort-d. de manière à la fois le fichier est trié sur le même ordre
et pour les plus rapides (un peu) l'exécution conserver le terrain en tant que 1er et de l'utilisation
rejoindre -1 1 -2 1-t (le délimiteur si vous avez utilisé une)-o 1,1 1,2 1,3 file1
fichier 2> fichier de sortie. Et votre travail est fait.

Apprécier.
  #6 (permalink)  
Old 02-06-2008
aismann aismann is offline
Registered User
  
 

Join Date: Apr 2005
Posts: 37
Merci h20boodle et Mahesh. Ils travaillent tous les deux très bien! Merci encore
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 04:04 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0