The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > UNIX voor Dummies Questions & Answers
.
google unix.com



UNIX voor Dummies Questions & Answers Als u niet zeker weet waar je een Unix-of Linux vraag, post het hier. Alle UNIX-en Linux beginners van harte welkom!!

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Ontwikkeling Releases: Linux Mint 4.0 Beta "fluxbox", 4.0 Alpha "Debian" iBot UNIX en Linux RSS Nieuws 0 01-04-2008 03:00 PM
Leg de lijn "mn_code \u003d" env | grep ".. mn" | awk-F "\u003d" '(print $ 2)' `" Lokesha UNIX voor Dummies Questions & Answers 4 12-20-2007 01:52
Nr. utpmx item: u moet exec "inloggen" uit laagste niveau 'shell' peterpan UNIX voor Dummies Questions & Answers 0 01-18-2006 04:15
treden twee lijnen als de tweede regel bevat "US DOLLAR" powah Programmeren en Shell Scripting 2 10-21-2005 07:30 PM
Help ~ ~ meedoen en "multijoin" hyo77 Programmeren en Shell Scripting 1 11-19-2003 01:20

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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 02-02-2008
aismann aismann is offline
Geregistreerde gebruiker
  
 

Join Date: april 2005
Posts: 37
hulp nodig met behulp van "join"

Geachte deskundigen,

Ik dringend moet weten hoe je deze 2 bestanden toetreden die overeenkomen.

Ik heb een bestand dat eruit ziet
Citaat:
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
en een ander bestand dat eruit ziet als
Citaat:
0060122000550
0060122000632
0060122001374
0060122004006
0060122004141
0060122004607
0060122011124
0060122014392
0060122014537
ik hard nodig om te weten hoe overeenkomen met de 2 bestanden met behulp van de tweede "-" als een veld scheidingsteken. Ive tryong de hele dag i can't figure it out. Please help!

Sara
  #2 (permalink)  
Old 02-02-2008
H2OBoodle H2OBoodle is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Posts: 18
Twee dingen:

Ik heb nooit gebruikt voegen, zodat u waarschijnlijk gaan om een beter antwoord te krijgen van iemand anders.

Ik heb niet het probleem verklaring zeer duidelijk, en kijken naar de gegevens hielp niet veel. Het blijkt dat er geen uniformiteit tussen de gegevens. Zo zijn de eerste inzendingen van de twee bestanden verondersteld te correleren?
1-0-0060122450000 0060122000550

Zijn de nummers 00060122 wat je probeert aan te sluiten op? Zo ja, wat is de gewenste output je na?

Hoe dan ook, experimenteerde ik met aansluiten een beetje en vond de resultaten kunnen gemakkelijk worden verstuurd via awk eenvoudig afdrukken van de velden die je nodig hebt. Misschien moet je benaderen als dat.

Als je een meer gedetailleerde beschrijving van wat je na het kan helpen.
  #3 (permalink)  
Old 02-02-2008
aismann aismann is offline
Geregistreerde gebruiker
  
 

Join Date: april 2005
Posts: 37
Sorry dat ik niet precies.
De twee bestanden zijn groot, meer dan 2 miljoen records per stuk. Maar het formaat is hetzelfde. Enige verschil is dat een bestand is het extra "1-0 -" of "1-1 -" of "1-3 -".

Im doen het nog een lange weg door te snijden karakters 1-4 uit en vervolgens met behulp van plakken en doe het later opnieuw.

Op prijs stellen als u zou kunnen laten weten hoe het te doen met behulp van awk. Bedankt!

sara
  #4 (permalink)  
Old 02-02-2008
H2OBoodle H2OBoodle is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Posts: 18
Nou mijn aannames over wat u probeert te doen waren slecht, dus mijn awk oplossing niet uit de pan voor mij. Maar ik gaf het een schot met een heel korte python script, en ik denk dat ik misschien wat je nodig hebt.

Om eerlijk te zijn, je nog steeds niet geef me een duidelijk idee van wat u wilde uw output te lijken, dus hier is wat ik aangenomen. Als ik fout zit, dan sorry, dit is mijn laatste schot.

Met behulp van de eerste vier regels van uw gegevens, ik denk dat je wilt dat deze output:
0060122450000 2000550
0060122450001 2000632
0060122450002 2001374
0060122450006 2004006

Het eerste nummer is van file_a met de eerste vier tekens afgehakt. Het tweede nummer is de eerste waarde ontdaan.

Als dit juist is, dan is hier een super eenvoudig python script te krijgen dat voor u:

script naam: foo.py

# Open de gegevensbestanden
fa \u003d open ( 'file_a', 'rb')
fb \u003d open ( 'file_b', 'rb')

# Ga door de bestanden regel voor regel uit strippen alleen de onderdelen
# Dat u wilt behouden. Ook de strook newlines vanaf het einde.

voor de lijn in fa:
bITa \u003d line [4:]. strip ( '\ n')
tmpb \u003d fb.readline (). strip ( '\ n')
# Je zou kunnen toevoegen chk hier om tmpb zorgen wedstrijden bITa. Je zou moeten een aantal extra hakken doen though. Met miljoenen platen, zou ik het doen.
bitb \u003d tmpb [-7:]
print bITa, bitb

# Sluiten bestanden
fa.close ()
fb.close ()

Voer het script als volgt uit:
shellPrompt $ python foo.py

Het script maakt de veronderstelling dat uw gegevens bestanden zijn op elkaar afgestemd correct, met de vermeldingen bijpassende positie-gewijs helemaal door. Als ze niet hebt, dan zal dit niet werken zonder wijzigingen. Uw gegevens worden verkeerd zijn als de waarden zijn verschoven.

En ten slotte, zijn er waarschijnlijk meer elegante python of shell technieken om dit te doen, maar dit werkt.

Succes.

Laatst bewerkt door H2OBoodle; op 02-02-2008 08:18.. Reden: geef meer info over hoe u het script uitvoert, waarschuwen op data corruptie als gegevens niet is uitgelijnd.
  #5 (permalink)  
Old 02-02-2008
vakharia Mahesh vakharia Mahesh is offline
Geregistreerde gebruiker
  
 

Join Date: Feb 2007
Posts: 51
meedoen

Aismann
Zult u pls duidelijk wat je wilt maken in output file? zie voor een succesvolle
uitvoering van join commd u nodig heeft op het gebied moeten van dezelfde lengte
en gesorteerd in dezelfde volgorde. dwz als digit -> sort-n en als alfabet
vervolgens -> sort-d. zodat het zowel het bestand zal worden gesorteerd op dezelfde volgorde
en voor sneller (een beetje) de uitvoering van het veld te houden als 1e en gebruik
join -1 1 -2 1-t (het scheidingsteken als u geen gebruik)-o 1.1 1.2 1.3 file1
bestand 2> output bestand. En uw werk is gedaan.

Genieten.
  #6 (permalink)  
Old 02-06-2008
aismann aismann is offline
Geregistreerde gebruiker
  
 

Join Date: april 2005
Posts: 37
Bedankt h20boodle en Mahesh. Beiden werken echt goed! Thanks again
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 12:14 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0