![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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:
Citaat:
Sara |
|
||||
|
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. |
|
||||
|
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 |
|
||||
|
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. |
|
||||
|
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. |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|