![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| Sammenligne mellom to filer | Quijote | Shell programmering og Skripting | 4 | 01-06-2009 03:00 |
| Hvordan sammenligne 2 filer. | ashoka123 | Shell programmering og Skripting | 6 | 10-21-2008 03:38 |
| Hvordan sammenligner du filene | arkhei | UNIX for Dummies Spørsmål og svar | 1 | 09-20-2008 05:45 |
| sammenligne filer | danabo | Shell programmering og Skripting | 3 | 05-19-2008 01:09 |
| sammenligne filer | ingunix | UNIX for Dummies Spørsmål og svar | 3 | 05-24-2001 12:44 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Sammenlign to filer med awk
Hei. Jeg er ny på awk og har søkt etter en løsning på problemet mitt, men har ikke funnet det rette svaret ennå. Jeg har to filer som ser slik ut:
file1 Slett, 3105551234 Slett, 3105551236 Slett, 5625559876 Slett, 5625556789 Slett, 5625553456 Slett, 5625551234 Slett, 5625556956 Slett, 5625556643 Slett, 6265552486 Slett, 6265559365 Legg til, 7755559833 Legg til, 9515550087 file2 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 ønsker å se på fil1 og en oppføring som har "Delete" i $ 1, se for $ 2 (fra fil1) i fil2. Deretter oppretter du en tredje fil, file3, med "D", $ 1 av fil2. Så ville utgang med eksemplene ovenfor ser slik ut: file3 D, 93 D, 110 D, 114 D, 118 D, 125 D, 127 D, 129 D, 133 D, 134 D, 137 Jeg håper jeg gjør forstand. Eventuelle hjelpe ville være verdsatt. Takk. |
|
||||
|
Ikke for å krangle om - men du er ikke klart. Ditt eksempel samsvarer ikke hva du sa.
ta 114,170256,0, -1, -1,, AAA,, 5625559876,6465550987,,, -1,, 581,93, -1 og Slett, 5625559876 Dette betyr ikke ut "de 114 ,...... linje. Din output D, 114 har de 114 linjen i det. Flere andre linjene er slik. Visste du mener det motsatte av hva du sa? |
|
||||
|
Sorry about that. fil1 er en liste med tall som må slettes eller legges til. fil2 er en liste over aktuelle tall og tilhørende informasjon. Jeg vil file3 å være bare "D", sammen med den første kolonnen i fil2 assosiert med antallet merket for sletting i fil1.
Jeg prøvde manuset Franklin postet, men jeg fikk "syntaksfeil i nærheten av linje 2". Jeg glemte å nevne Jeg bruker Solaris 8 hvis det gjør en forskjell. Takk. |
|
||||
|
Sitat:
Code:
awk -F, 'NR==FNR && /^D/ {a[$2]++;next}
$9 in a || $10 in a {print "D," $1}' file1 file2
Sånn: Code:
awk -F, Sett feltet separator Code:
NR==FNR && /^D/ Hvis vi leser 1. filen og linjen starter med en "D" Code:
{a[$2]++;next}
Sett en matrise med 2nd feltet som indeks og lese neste linje Code:
$9 in a || $10 in a {print "D," $1}'
Hvis den 9. eller den 10. feltet eksisterer som en indeks for matrisen A i 2. filen ut "D", og den 1. feltet. Hilsen |
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|