Art-preisliste: zeilen mit gleichen Preisen aber diff. wert in best. spalte entfernen

J

justahoshi

hallo,

ich hab' da ein problem:

folgende datei mit verschiedenen artikelpreisen muss "ausgemistet" werden:

Code:
.
.
1a,2b3c-4d            2S20A  E  1  120010101               123ST  10000EUR                              
1a,2b3c-4d            2S20A  V  1  120010101               567ST  10000EUR                              
.
.
1a,2b3c-4d            2S20A  E  1  120010101               809ST  15555EUR                              
1a,2b3c-4d            2S20A  V  1  120010101               899ST  15555EUR                              
.
.
1a,2b3c-4d            2S20A  E  1  120010101               123ST  19999EUR                              
1a,2b3c-4d            2S20A  V  1  120010101               567ST  19999EUR                              
.
.

die spalten sind durch unterschiedliche anzahlen von leerzeichen getrennt; sodass die spalten rechtsbuendig (!) ausgerichtet sind;
diese format muss erhalten bleiben

spalte 1: artikel-nr. (3- bis 14-stellig)
spalte 2: bel. string (lieferanten code, 5- bis 7-stellig)
spalte 3: E=einkaufspreis V=Verkaufspreis
spalte 4: bel. ziffer
spalte 5: bel. string (9-stellig)
spalte 6: preis (zB. 123ST entspricht 1.23 euro)
spalte 7: preiscode (zb. 10000EUR oder 19999EUR)


wenn fuer eine bestimmte artikelnummer (zB. 1a2b3c4d) eine zeile mit preiscode (10000EUR) und eine weitere zeile mit anderem preiscode (zB. 19999EUR) den gleichen E-preis enthalten, dann sollen die zeilen mit dem von 10000EUR verschiedenen preiscode (hier 19999EUR) geloescht werden.

sind die E-preise verschieden sollen die zeilen mit von 10000EUR verschiedenen preiscode erhalten bleiben
(hier die zwei zeilen mit preiscode 15555EUR)


ich weiss, das ist ein ziemlicher brocken, aber ich wuerde mich ueber jede hilfe freuen

herzlichen dank im voraus

-hoshi


PS: die dateien sind zig MB gross ...
 
Guten Morgen

Zeig uns doch mal was du bereits gemacht hast, darauf lässt sich bestimmt aufbauen...

Gruss
d22
 
Hallo
Ich würde das mit perl (oder AWK) lösen, da beide Hashtables verstehen.
Da Perl aber schneller ist, hier mein Vorschlag mit Perl.
Wenn ich dich richtig verstehe, dann soll :
wenn Feld1 und Feld3 und Feld6 merhfach in einer Zeile gleich sind, soll nur das erste ausgegeben werden.
Wir benutzen den Vorteil von Perl mit der Option -a, welches die Felder automatisch splittet und im Array @F zur Verfügung stellt.
Nun wird es sehr simpel.
$ cat testwerte
1a,2b3c-4d 2S20A E 1 120010101 123ST 10000EUR
1a,2b3c-4d 2S20A V 1 120010101 567ST 10000EUR
1a,2b3c-4d 2S20A E 1 120010101 809ST 15555EUR
1a,2b3c-4d 2S20A V 1 120010101 899ST 15555EUR
1a,2b3c-4d 2S20A E 1 120010101 123ST 19999EUR
1a,2b3c-4d 2S20A V 1 120010101 567ST 19999EUR

$ perl -anle 'if ($h{$F[0].$F[2].$F[5]}++ < 1 ){print $_}' test
1a,2b3c-4d 2S20A E 1 120010101 123ST 10000EUR
1a,2b3c-4d 2S20A V 1 120010101 567ST 10000EUR
1a,2b3c-4d 2S20A E 1 120010101 809ST 15555EUR
1a,2b3c-4d 2S20A V 1 120010101 899ST 15555EUR

Ist es das was du suchst?
Wie zu sehen kein so großer Brocken für Perl. ;)
Gruß Wolfgang
 

Ähnliche Themen

Samba als PDC [Short-HOWTO]

Zurück
Oben