The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Vergelijk tussen twee bestanden Quijote Programmeren en Shell Scripting 4 01-06-2009 03:00 PM
Hoe te vergelijken 2 bestanden. ashoka123 Programmeren en Shell Scripting 6 10-21-2008 03:38
Hoe te vergelijken met bestanden arkhei UNIX voor Dummies Questions & Answers 1 09-20-2008 05:45
vergelijken van bestanden danabo Programmeren en Shell Scripting 3 05-19-2008 01:09 PM
vergelijken van bestanden ingunix UNIX voor Dummies Questions & Answers 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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 05-26-2009
paul.o paul.o is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Posten: 4
Vergelijk twee bestanden met behulp van awk

Hoi. Ik ben nieuw in awk en hebben gezocht naar een oplossing voor mijn probleem, maar nog niet gevonden het juiste antwoord nog niet. Ik heb twee bestanden die er zo uitzien:

bestand1
Verwijderen, 3105551234
Verwijderen, 3105551236
Verwijderen, 5625559876
Verwijderen, 5625556789
Verwijderen, 5625553456
Verwijderen, 5625551234
Verwijderen, 5625556956
Verwijderen, 5625556643
Verwijderen, 6265552486
Verwijderen, 6265559365
Toevoegen, 7755559833
Toevoegen, 9515550087


bestand2
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

Ik wil graag kijken naar bestand1 en een item dat is "Verwijderen" in $ 1, op zoek naar 2 dollar (vanaf bestand1) in file2. Maak vervolgens een derde bestand, bestand3, met "D," $ 1 van file2. Dus, zou de output met de bovenstaande voorbeelden als volgt uitzien:

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

Ik hoop dat ik het maken van betekenis. Any help would be appreciated. Bedankt.
  #2 (permalink)  
Old 05-26-2009
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Locatie: NM
Berichten: 5.763
Niet te kibbelen - maar u bent niet duidelijk. Uw voorbeeld niet overeenkomt met wat je zei.
nemen
114,170256,0, -1, -1,, AAA,, 5625559876,6465550987,,, -1,, 581,93, -1
en
Verwijderen, 5625559876

Dit betekent 'niet afgedrukt' de 114 ,...... lijn.

Uw uitgang
D, 114

heeft de 114 lijn in. Diverse andere lijnen zijn als deze. Bedoelt u het omgekeerde van wat je zei?
  #3 (permalink)  
Old 05-26-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Berichten: 4.309
Hij bedoelt iets als:

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
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Posten: 4
Sorry about that. bestand1 is een lijst van nummers die moeten worden verwijderd of toegevoegd. file2 is een lijst van de huidige nummers en de bijbehorende informatie. Ik wil bestand3 worden alleen de "D", samen met de eerste kolom van file2 geassocieerd met het aantal gemarkeerd voor verwijdering in file1.

Ik probeerde het script Franklin gepost, maar ik kreeg "syntax error near line 2". Ik vergat te vermelden ik gebruik Solaris 8 als dat een verschil maakt. Bedankt.
  #5 (permalink)  
Old 05-26-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Berichten: 4.309
Gebruik nawk of / usr/xpg4/bin/awk op Solaris.

Groeten
  #6 (permalink)  
Old 05-26-2009
paul.o paul.o is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Posten: 4
Ja, nawk gewerkt, dank u zeer. Ik vroeg me af, als je het niet erg vond, als je kon verdeling van het script, zodat ik precies kan begrijpen hoe het werkt? Ik wil graag zo veel van dit leren als ik kan. Bedankt.
  #7 (permalink)  
Old 05-26-2009
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Berichten: 4.309
Citaat:
Oorspronkelijk geplaatst door paul.o View Post
Ja, nawk gewerkt, dank u zeer. Ik vroeg me af, als je het niet erg vond, als je kon verdeling van het script, zodat ik precies kan begrijpen hoe het werkt? Ik wil graag zo veel van dit leren als ik kan. Bedankt.
Code:
awk -F, 'NR==FNR && /^D/ {a[$2]++;next}
$9 in a || $10 in a {print "D," $1}' file1 file2
Hier gaan we:

Code:
awk -F,
Set field separator

Code:
NR==FNR && /^D/
Als we lezen de 1e bestand en de lijn begint met een "D"

Code:
{a[$2]++;next}
Stel een array met de 2e veld als index en lees de volgende regel

Code:
$9 in a || $10 in a {print "D," $1}'
Als de 9e of de 10e veld bestaat als een index van de array een in het 2e bestand af te drukken "D" en de 1e veld.


Groeten
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 05:13.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0