![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
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. |
|
||||
|
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? |
|
||||
|
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. |
|
||||
|
Citat:
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 |
![]() |
| Komihåglista |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|