![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Sammenlign mellem to filer | Quijote | Shell Programmering og Scripting | 4 | 01-06-2009 03:00 PM |
| Hvordan man kan sammenligne 2 filer. | ashoka123 | Shell Programmering og Scripting | 6 | 10-21-2008 03:38 AM |
| Hvordan man kan sammenligne til filer | arkhei | UNIX for dummyer Spørgsmål & svar | 1 | 09-20-2008 05:45 AM |
| sammenligne filer | danabo | Shell Programmering og Scripting | 3 | 05-19-2008 01:09 PM |
| sammenligne filer | ingunix | UNIX for dummyer Spørgsmål & svar | 3 | 05-24-2001 12:44 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Sammenlign to filer ved hjælp awk
Hej. Jeg er ny til awk og har søgt efter en løsning på mit problem, men har ikke fundet det rigtige svar endnu. Jeg har to filer, der ser sådan ud:
file1 Slet, 3105551234 Slet, 3105551236 Slet, 5625559876 Slet, 5625556789 Slet, 5625553456 Slet, 5625551234 Slet, 5625556956 Slet, 5625556643 Slet, 6265552486 Slet, 6265559365 Tilføj, 7755559833 Tilføj, 9515550087 fil2 93,170334,0, -1, -1,, AAA,, 5625556643,6465550987,,, -1,, 581,93, -1 94,170335,0, -1, -1,, AAA,, 7145550167,6465550987,,, -1,, 581,93, -1 107,170239,0, -1, -1,, AAA,, 6265559999,6465550987,,, -1,, 581,93, -1 109,170240,0, -1, -1,, AAA,, 5205558723,6465550987,,, -1,, 581,93, -1 110,170241,0, -1, -1,, AAA,, 3105551236,6465550987,,, -1,, 581,93, -1 111,170348,0, -1, -1,, AAA,, 6195550178,6465550987,,, -1,, 581,93, -1 114,170256,0, -1, -1,, AAA,, 5625559876,6465550987,,, -1,, 581,93, -1 118,170336,0, -1, -1,, AAA,, 3105551234,6465550987,,, -1,, 581,93, -1 119,170337,0, -1, -1,, AAA,, 5125559812,6465550987,,, -1,, 581,93, -1 120,170338,0, -1, -1,, AAA,, 5125559083,6465550987,,, -1,, 581,93, -1 121,101,1, -1, -1,, AAA,,, 2135559126,,, -1,, 0,85, -1 122,170339,0, -1, -1,, AAA,, 5625559067,6465550987,,, -1,, 581,93, -1 125,999996,1, -1, -1,, AAA,,, 6265559365,,, -1,, 0,2561, -1 127,170340,0, -1, -1,, AAA,, 5625551234,6465550987,,, -1,, 581,93, -1 128,170341,0, -1, -1,, AAA,, 5625559148,6465550987,,, -1,, 581,93, -1 129,170342,0, -1, -1,, AAA,, 5625556789,6465550987,,, -1,, 581,93, -1 130,170343,0, -1, -1,, AAA,, 5625559210,6465550987,,, -1,, 581,93, -1 133,100,1, -1, -1,, AAA,,, 6265552486,,, -1,, 0,85, -1 134,170344,0, -1, -1,, AAA,, 5625553456,6465550987,,, -1,, 581,93, -1 135,170345,0, -1, -1,, AAA,, 7605559809,6465550987,,, -1,, 581,93, -1 137,170257,0, -1, -1,, AAA,, 5625556956,6465550987,,, -1,, 581,93, -1 Jeg vil gerne se på fil1 og en post, der har "Slet" i $ 1, se for $ 2 (fra fil1) i fil2. Opret derefter en tredje fil, fil3, med "D" $ 1 for fil2. Så vil outputtet med de ovennævnte eksempler se således ud: fil3 D, 93 D, 110 D, 114 D, 118 D, 125 D, 127 D, 129 D, 133 D, 134 D, 137 Jeg håber, jeg foretager mening. Enhver hjælp ville være værdsat. Tak. |
|
||||
|
Ikke at hænge sig i detaljer - men du er ikke klar. Dit eksempel ikke passer til det, du sagde.
tage 114,170256,0, -1, -1,, AAA,, 5625559876,6465550987,,, -1,, 581,93, -1 og Slet, 5625559876 Det betyder 'ikke udskrives' de 114 ,...... linje. Dit output D, 114 har de 114 linje i det. Flere andre linjer som denne. Har du mener det modsatte af, hvad du sagde? |
|
||||
|
Sorry about that. fil1 er en liste over numre, der skal slettes eller tilføjes. fil2 er en liste over aktuelle tal og tilsvarende oplysninger. Jeg vil fil3 blot at være "D", sammen med den første kolonne i fil2 forbundet med nummeret til sletning i fil1.
Jeg prøvede det scriptet Franklin sendt, men jeg fik "syntaksfejl i nærheden af linje 2". Jeg glemte at nævne Jeg bruger Solaris 8, om det gør en forskel. Tak. |
|
||||
|
Citat:
Code:
awk -F, 'NR==FNR && /^D/ {a[$2]++;next}
$9 in a || $10 in a {print "D," $1}' file1 file2
Her vi går: Code:
awk -F, Set feltseparator Code:
NR==FNR && /^D/ Hvis vi læser den 1. filen, og den linje, der starter med et "D" Code:
{a[$2]++;next}
Sæt en array med 2. felt som indeks og læse den næste linje Code:
$9 in a || $10 in a {print "D," $1}'
Hvis den 9. eller 10. felt eksisterer som et indeks af array en i 2. filen print "D", og 1. felt. Hilsen |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|