The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



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

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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 05-26-2009
paul.o paul.o is offline
Registrert bruker
  
 

Bli Dato: mai 2009
Innlegg: 4
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.
  #2 (permalink)  
Old 05-26-2009
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Bli Date: Feb 2004
Beliggenhet: NM
Innlegg: 5808
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?
  #3 (permalink)  
Old 05-26-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Bli Date: Feb 2007
Innlegg: 4346
Han betyr noe sånt som:


Code:
awk -F, 'NR==FNR && /^D/ {a[$2]++;next}
$9 in a || $10 in a {print "D," $1}' file1 file2

  #4 (permalink)  
Old 05-26-2009
paul.o paul.o is offline
Registrert bruker
  
 

Bli Dato: mai 2009
Innlegg: 4
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.
  #5 (permalink)  
Old 05-26-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Bli Date: Feb 2007
Innlegg: 4346
Bruk nawk eller / usr/xpg4/bin/awk på Solaris.

Hilsen
  #6 (permalink)  
Old 05-26-2009
paul.o paul.o is offline
Registrert bruker
  
 

Bli Dato: mai 2009
Innlegg: 4
Ja, nawk jobbet, takk. Jeg lurte på, hvis du ikke sinn, hvis du kunne sammenbrudd skriptet slik at jeg kan forstå akkurat hvordan det fungerer? Jeg vil gjerne lære så mye av dette som jeg kan. Takk.
  #7 (permalink)  
Old 05-26-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Bli Date: Feb 2007
Innlegg: 4346
Sitat:
Originally Posted by paul.o View Post
Ja, nawk jobbet, takk. Jeg lurte på, hvis du ikke sinn, hvis du kunne sammenbrudd skriptet slik at jeg kan forstå akkurat hvordan det fungerer? Jeg vil gjerne lære så mye av dette som jeg kan. Takk.

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
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 08:59.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0