The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



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

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øg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 05-26-2009
paul.o paul.o is offline
Registreret Bruger
  
 

Join Date: May 2009
Stillinger: 4
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.
  #2 (permalink)  
Old 05-26-2009
jim McNamara jim mcnamara is online now Forum Staff  
...@...
  
 

Join Date: Feb 2004
Beliggenhed: NM
Indlæg: 5.807
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?
  #3 (permalink)  
Old 05-26-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Indlæg: 4.345
Han betyder noget i retning af:


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
Registreret Bruger
  
 

Join Date: May 2009
Stillinger: 4
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.
  #5 (permalink)  
Old 05-26-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Indlæg: 4.345
Brug nawk eller / usr/xpg4/bin/awk på Solaris.

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

Join Date: May 2009
Stillinger: 4
Ja, nawk bearbejdet, thank you very much. Jeg tænkte på, hvis du ikke mening, hvis du kunne opdeling scriptet, så jeg kan forstå præcist, hvordan det virker? Jeg vil gerne lære så meget af dette som jeg kan. Tak.
  #7 (permalink)  
Old 05-26-2009
Franklin52 Franklin52 is online now Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Indlæg: 4.345
Citat:
Oprindeligt Indsendt af paul.o View Post
Ja, nawk bearbejdet, thank you very much. Jeg tænkte på, hvis du ikke mening, hvis du kunne opdeling scriptet, så jeg kan forstå præcist, hvordan det virker? Jeg vil gerne lære så meget af dette som jeg kan. Tak.

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

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 11:46 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0