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
Script udvinding af forkerte data fra tekstfil jermaine4ever Shell Programmering og Scripting 6 03-16-2009 12:18 PM
Ukorrekt login NIS? Juterassee Sun Solaris 5 10-30-2008 11:08 AM
login ukorrekt espace1000 UNIX for dummyer Spørgsmål & svar 2 08-22-2008 07:48 AM
Login Incorrect sydney2008 Red Hat 6 08-22-2008 05:57 AM
Forkert mappenavn jand102821 UNIX for dummyer Spørgsmål & svar 1 06-19-2002 05:35 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 04-21-2009
Pinnacle pinnacle is offline
Registreret Bruger
  
 

Join Date: Apr 2009
Posts: 182
Awk ukorrekte data.

Jeg bruger følgende kommando:


Code:
nawk -F"," 'NR==FNR {a[$2$3]=$1;next} a[$2$3] {print a[$2$3],$1,$2,$3}'  file1 file2

Jeg får 40 optegnelser output.
Men når jeg importere file1 og fil2 i MS Access, jeg får 140 registreringer.
Og jeg ved 140 er korrekt tæller.

Sætter pris på din hjælp til at korrigere det ovenstående script
  #2 (permalink)  
Old 04-21-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Beliggenhed: Boston, MA
Indlæg: 5.131
Det ville helt sikkert hjælpe, hvis du har givet en mere detaljeret beskrivelse af, hvad du forsøger at opnå med den prøve, datafiler og den forventede produktion.

Min krystal kuglen er lidt fuzzy, men:

Code:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file1 file2

  #3 (permalink)  
Old 04-21-2009
Pinnacle pinnacle is offline
Registreret Bruger
  
 

Join Date: Apr 2009
Posts: 182
Citat:
Oprindeligt Indsendt af vgersh99 View Post
Det ville helt sikkert hjælpe, hvis du har givet en mere detaljeret beskrivelse af, hvad du forsøger at opnå med den prøve, datafiler og den forventede produktion.

Min krystal kuglen er lidt fuzzy, men:

Code:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file1 file2
vgersh99

Jeg har to filer
$ Hovedet file1
zip, Fornavn, Efternavn
07.777, abc, def
22.584, dec, DLO
25.487, xyz, jkl
25.488, dim, kio

$ Hovedet fil2
Målet server database
SSN, Fornavn, Efternavn
123456789, abc, def
123456789, dec, DLO
123456789, xyz, jkl
123456789, dim, kio
ønskede Output:
SSN, zip, Fornavn, Efternavn


Code:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=,  " file2 file1
40 Matches


Code:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=,  " file1 file2
140 matches

140 kampe er korrekt Jeg ved, men begge skal give 140 i dont know, hvorfor dets give forskel.

Kan du venligst forklare denne del ($ 2 SUBSEP $ 3)
a [$ 2, $ 3] vi bruger her, fordi dets er kommasepareret inddatafilen eller er den generelle regel
Hvis jeg dont brug, så også jeg får samme resultat
  #4 (permalink)  
Old 04-21-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Beliggenhed: Boston, MA
Indlæg: 5.131
Citat:
Oprindeligt Indsendt af Zenith View Post
vgersh99

Jeg har to filer
$ Hovedet file1
zip, Fornavn, Efternavn
07.777, abc, def
22.584, dec, DLO
25.487, xyz, jkl
25.488, dim, kio

$ Hovedet fil2
Målet server database
SSN, Fornavn, Efternavn
123456789, abc, def
123456789, dec, DLO
123456789, xyz, jkl
123456789, dim, kio
ønskede Output:
SSN, zip, Fornavn, Efternavn


Code:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=,  " file2 file1
40 Matches


Code:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=,  " file1 file2
140 matches
Ovenstående 2 invocations er nøjagtigt det samme. Jeg forstår ikke, hvorfor du får forskellige resultater.
Også jeg ikke forstå, hvorfor du har en efterfølgende dobbelt anførselstegn (i rødt) i begge tilfælde?
Citat:
Oprindeligt Indsendt af Zenith
140 kampe er korrekt Jeg ved, men begge skal give 140 i dont know, hvorfor dets give forskel.

Kan du venligst forklare denne del ($ 2 SUBSEP $ 3)
a [$ 2, $ 3] vi bruger her, fordi dets er kommasepareret inddatafilen eller er den generelle regel
Hvis jeg dont brug, så også jeg får samme resultat
Nej, det er ikke fordi din fil er komma-adskilt. Du kan opbygge din array indeks blot ved concatenating strengene ($ 2 $ 3) eller (hvilket er bedre for yderligere behandling) ved at gøre dette:

Code:
a[$2,$3]

I forbindelse med array indeks bygning, det "," erstattes af awk interne variable SUBSEP. Hvis senere om du beslutter dig for at "split" indekset (for at finde den del) kan du fordelt på SUBSEP. Hvis du blot concatenate strengen, kan du ikke genopbygge indekset til sin originale dele.

Den oprindeligt indsendt opløsning skal give dig det ønskede resultat.
Da file1:

Code:
zip,FirstName,Lastname
07777,abc,def
22584,dec,dlo
25487,xyz,jkl
25488,dim,kio

og fil2:

Code:
SSN,Firstname,LastName
123456789,abc,def
123456789,dec,dlo
123456789,xyz,jkl
123456789,dim,kio

kører:

Code:
nawk -F, 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file2 file1

Resulterer i:

Code:
123456789,07777,abc,def
123456789,22584,dec,dlo
123456789,25487,xyz,jkl
123456789,25488,dim,kio

Tjek din file1 og fil2 - se om der er eventuelle uoverensstemmelser og / eller indlejret rum.

Også, dette er IKKE en af dine første forum stillinger og du er blevet bedt om i løbet af de sidste: brug venligst BB Code tags når udstationering data eller kode prøver.
  #5 (permalink)  
Old 04-21-2009
Pinnacle pinnacle is offline
Registreret Bruger
  
 

Join Date: Apr 2009
Posts: 182
Citat:
Oprindeligt Indsendt af vgersh99 View Post
Ovenstående 2 invocations er nøjagtigt det samme. Jeg forstår ikke, hvorfor du får forskellige resultater.
Også jeg ikke forstå, hvorfor du har en efterfølgende dobbelt anførselstegn (i rødt) i begge tilfælde?

Nej, det er ikke fordi din fil er komma-adskilt. Du kan opbygge din array indeks blot ved concatenating strengene ($ 2 $ 3) eller (hvilket er bedre for yderligere behandling) ved at gøre dette:

Code:
a[$2,$3]

I forbindelse med array indeks bygning, det "," erstattes af awk interne variable SUBSEP. Hvis senere om du beslutter dig for at "split" indekset (for at finde den del) kan du fordelt på SUBSEP. Hvis du blot concatenate strengen, kan du ikke genopbygge indekset til sin originale dele.

Den oprindeligt indsendt opløsning skal give dig det ønskede resultat.
Da file1:

Code:
zip,FirstName,Lastname
07777,abc,def
22584,dec,dlo
25487,xyz,jkl
25488,dim,kio

og fil2:

Code:
SSN,Firstname,LastName
123456789,abc,def
123456789,dec,dlo
123456789,xyz,jkl
123456789,dim,kio

kører:

Code:
nawk -F, 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file2 file1

Resulterer i:

Code:
123456789,07777,abc,def
123456789,22584,dec,dlo
123456789,25487,xyz,jkl
123456789,25488,dim,kio

Tjek din file1 og fil2 - se om der er eventuelle uoverensstemmelser og / eller indlejret rum.

Også, dette er IKKE en af dine første forum stillinger og du er blevet bedt om i løbet af de sidste: brug venligst BB Code tags når udstationering data eller kode prøver.

Code:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file1 file2

I ovenstående kode, hvis jeg skifter file1 og fie2 holdning så jeg får forskellige resultater.
Jeg kan ikke sende de filer på grund af data følsomhed.
Jeg visuelt kontrolleres de filer, og jeg ser ingen specialtegn eller noget.
Er der en kommando til at verificere dette.

Sætter pris på dit svar.
  #6 (permalink)  
Old 04-22-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Beliggenhed: Boston, MA
Indlæg: 5.131
Citat:
Oprindeligt Indsendt af Zenith View Post
Code:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file1 file2

I ovenstående kode, hvis jeg skifter file1 og fie2 holdning så jeg får forskellige resultater.
Jeg kan ikke sende de filer på grund af data følsomhed.
Jeg visuelt kontrolleres de filer, og jeg ser ingen specialtegn eller noget.
Er der en kommando til at verificere dette.

Sætter pris på dit svar.
Patient: doc, det virkelig gør ondt, når jeg som!
Læge: Så ikke gør som!

De holdninger, som filerne på kommandolinjen er vigtigt for kortlægning af de områder, fra en fil til den anden. Kig på dine data files' felter - prøv at se forskellen og se på din oprindelige udstationering for konverteringspolitikken logik.
Held og lykke.
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 01:44 PM.


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