The UNIX and Linux Forums  


Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Jämför mellan två filer Quijote Shell-programmering och Skript 4 01-06-2009 03:00
Hur kan man jämföra 2 filer. ashoka123 Shell-programmering och Skript 6 10-21-2008 03:38
Hur kan man jämföra med filer arkhei UNIX for Dummies Frågor & Svar 1 09-20-2008 05:45
jämföra filer danabo Shell-programmering och Skript 3 05-19-2008 01:09
jämföra filer ingunix UNIX for Dummies Frågor & 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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 05-26-2009
paul.o paul.o is offline
Registered User
  
 

Join Date: maj 2009
Inlägg: 4
Jämföra två filer med awk

Hej. Jag är ny awk och har sökt efter en lösning på mina problem, men har inte hittat rätt svar. Jag har två filer som ser ut så här:

fil1
Radera, 3105551234
Radera, 3105551236
Radera, 5625559876
Radera, 5625556789
Radera, 5625553456
Radera, 5625551234
Radera, 5625556956
Radera, 5625556643
Radera, 6265552486
Radera, 6265559365
Lägg till, 7755559833
Lägg till, 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

Jag skulle vilja se på fil1 och en post som har "Ta bort" i $ 1, leta efter $ 2 (från fil1) i fil2. Skapa sedan en tredje fil, fil3, med "D" $ 1 för fil2. Så skulle produktionen med ovanstående exempel se ut så här:

fil3
D, 93
D, 110
D, 114
D, 118
D, 125
D, 127
D, 129
D, 133
D, 134
D, 137

Jag hoppas att jag gör bemärkelse. Någon hjälp skulle uppskattas. Tack.
  #2 (permalänk)  
Old 05-26-2009
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: februari 2004
Ort: NM
Inlägg: 5.800
Inte för att slingra sig - men du är inte klar. Ditt exempel inte motsvarar det du sa.
ta
114,170256,0, -1, -1,, AAA,, 5625559876,6465550987,,, -1,, 581,93, -1
och
Radera, 5625559876

Detta betyder "inte ut" de 114 ,...... linje.

Skriva ut
D, 114

har 114 linje i den. Flera andra linjer är så här. Menade du motsatsen till vad du sa?
  #3 (permalänk)  
Old 05-26-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.342
Han betyder ungefär:


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

  #4 (permalänk)  
Old 05-26-2009
paul.o paul.o is offline
Registered User
  
 

Join Date: maj 2009
Inlägg: 4
Förlåt. fil1 är en lista med siffror som måste tas bort eller läggas till. fil2 är en lista med aktuella siffror och motsvarande information. Jag vill fil3 vara bara "D", tillsammans med den första kolumnen i fil2 samband med numret för radering i fil1.

Jag försökte skriptet Franklin postat, men jag fick "syntax error near line 2". Jag glömde att nämna Jag använder Solaris 8 om det blir någon skillnad. Tack.
  #5 (permalänk)  
Old 05-26-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.342
Använd nawk eller / usr/xpg4/bin/awk på Solaris.

Hälsningar
  #6 (permalänk)  
Old 05-26-2009
paul.o paul.o is offline
Registered User
  
 

Join Date: maj 2009
Inlägg: 4
Ja, nawk fungerade, tack så mycket. Jag undrar, om du inte ihåg, om du kunde uppdelning scriptet så jag kan förstå exakt hur den fungerar? Jag vill lära mig så mycket av detta som jag kan. Tack.
  #7 (permalänk)  
Old 05-26-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.342
Citat:
Ursprungligen postat av paul.o View Post
Ja, nawk fungerade, tack så mycket. Jag undrar, om du inte ihåg, om du kunde uppdelning scriptet så jag kan förstå exakt hur den fungerar? Jag vill lära mig så mycket av detta som jag kan. Tack.

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

Då kör vi:


Kod:
awk -F,

Ställ fält separator


Kod:
NR==FNR && /^D/

Om vi läser den 1 filen och linjen börjar med ett "D"


Kod:
{a[$2]++;next}

Ställ en matris med den 2: a fältet som index och läsa nästa rad


Kod:
$9 in a || $10 in a {print "D," $1}'

Om 9: e eller den 10: e området existerar som ett index för en array i 2: a akten print "D" och den 1: a fältet.


Hälsningar
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 12:59.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0