Konvertierung / Filterung einer grösseren datenmenge als pdf

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hallo ! Folgendes Problem "beschäftigt" mich beruflich bedingt : In meiner firma wird in regelmässigen Abständen ( 1x Woche ) eine Lagerliste durch unser System generiert - als PDF - File ... Meine Arbeit würde sich erheblich erleichtern , wenn ich diese Daten filtern könnte und zwar wie folgt : in dieser Liste befinden sich öfters doppelt belegte lagerplätze ( 1 artikel > 2 - x plätze ) das ist jedoch nur anhand der artikelnummer herauszufinden. da die liste ( ca 4000 artikel , 200 A4 seiten ) nicht gerade klein ist, fällt ein manuelles löschen der unwichtigen zeilen flach. ideal wäre zb folgendes : pdf > konvertieren, zb html oder besser ascii pur dann zb via grep ( falls es da ne möglichkeit gibt ) alle zeilen löschen lassen, die in der 2. spalte nur 1x genannt werden , so das nur noch die zeilen übrig bleiben , die ein x-faches ( meist 2x , aber auch 3-4 mal kann vorkommen ) vorkommen haben, übrig bleiben. nur : meines wissens ist grep dazu nicht in der lage ( also das die häufigkeit einer ziffer in einer bestimmten "spalte" zu prüfen und wenn dieser wert =1 ist, die betreffende zeile zu löschen ) und eine andere filtermethode , die man ev als script verwenden könnte, kenne ich nicht. und auch mit der konvertierung habe ich zweifel - pdf2html ist das einzige so auf anhieb, das mir da einfallen würde ( nur müsste ich dann vermutlich die htmlbefehle auch rausfiltern, dürfte aber grep-tauglich sein ) das schwierigere problem stellt sich für mich die möglichst einfache filterung dar, da ich das zb über nacht machen möchte - um dann bei arbeitsbeginn eine "fertige" miniliste habe ( ev. 1-2 A4 seiten ) die dann zum drucker kann. und falls jemand nicht weiß was ich will *G* >>> - --------Lagerliste original ----- 010101 10010010001 Beschreibung Artikel 020102 10010010002 Beschreibung Artikel 010403 10010010003 Beschreibung Artikel 071101 10010010004 Beschreibung Artikel 193308 10010010004 Beschreibung Artikel 163203 10010010005 Beschreibung Artikel 147705 10010010006 Beschreibung Artikel - -------------- nach "filterung" : - -------- 071101 10010010004 Beschreibung Artikel 193308 10010010004 Beschreibung Artikel - ------- nun meine frage : da die konvertierung ja das vermutlich kleinere problem ist ... ist eine solche "filterung" machbar ??? - -- Shaw's Principle: Build a system that even a fool can use, and only a fool will want to use it. - -------------------------------------------------------- Registierter Linux - User #177159 ICQ - UIN : 51735624 HP : http://www.LinuxCobra.de eBay : http://members.ebay.de/aboutme/linuxcobra PGP-Key Server : http://blackhole.pca.dfn.de - -------------------------------------------------------- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux) iD8DBQE/a34lkAiRDZSEUCwRAtPqAJsGuVeMIcwmAzG40XIRKG6buUkryQCfV5FG tBzv/rBMse39G3zWhrjqiHs= =VC2t -----END PGP SIGNATURE-----

Marco Jäger <Marco_Jaeger@gmx.de>
ideal wäre zb folgendes : pdf > konvertieren, zb html oder besser ascii pur dann zb via grep ( falls es da ne möglichkeit gibt ) alle zeilen löschen lassen, die in der 2. spalte nur 1x genannt werden , so das nur noch die zeilen übrig bleiben , die ein x-faches ( meist 2x , aber auch 3-4 mal kann vorkommen ) vorkommen haben, übrig bleiben.
man sortiert (sort) nach dem entsprechenden Feld und lässt dann uniq drauf los. sort - sort lines of text files uniq - remove duplicate lines from a sorted file sort -k2 datei | uniq -f 1 -d Voraussetzung: bei gleicher Artikelnummer ist die Beschreibung auch gleich. Falls die Dateien dann doch noch komplexer sind, dann ist's besser gleich mit Perl anzufangen. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@[informatik-vollmer.de|alumni.uni-karlsruhe.de|acm.org] www.informatik-vollmer.de

On Saturday 20 September 2003 01:41, Dr. Jürgen Vollmer wrote:
Marco Jäger <Marco_Jaeger@gmx.de>
ideal wäre zb folgendes : pdf > konvertieren, zb html oder besser ascii pur dann zb via grep ( falls es da ne möglichkeit gibt ) alle zeilen löschen lassen, die in der 2. spalte nur 1x genannt werden , so das nur noch die zeilen übrig bleiben , die ein x-faches ( meist 2x , aber auch 3-4 mal kann vorkommen ) vorkommen haben, übrig bleiben.
sort -k2 datei | uniq -f 1 -d
Damit bekommt er aber nur den ersten Lagerort pro Artikel zurueck. Aber wir haben jetzt ja schon die Artikelnummern, die mehr als einmal vorkommen, also koennen wir damit alle Zeilen aus der urspruenglichen Datei holen: sort -k2 datei | uniq -f1 -d | tr -s ' ' | cut -f2 -d ' ' | \ xargs -i grep {} datei Je nachdem wie gross die Datei ist und wie oft das grep aufgerufen wird kann die Ausfuehrung etwas dauern. Wie Jürgen schon schrieb, Perl ist ideal fuer komplexere Arbeiten an Textdataien. Michael

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Samstag, 20. September 2003 15:35 schrieb Michael Siefritz:
On Saturday 20 September 2003 01:41, Dr. Jürgen Vollmer wrote:
Marco Jäger <Marco_Jaeger@gmx.de>
ideal wäre zb folgendes : pdf > konvertieren, zb html oder besser ascii pur dann zb via grep ( falls es da ne möglichkeit gibt ) alle zeilen löschen lassen, die in der 2. spalte nur 1x genannt werden , so das nur noch die zeilen übrig bleiben , die ein x-faches ( meist 2x , aber auch 3-4 mal kann vorkommen ) vorkommen haben, übrig bleiben.
sort -k2 datei | uniq -f 1 -d
Damit bekommt er aber nur den ersten Lagerort pro Artikel zurueck. Aber wir haben jetzt ja schon die Artikelnummern, die mehr als einmal vorkommen, also koennen wir damit alle Zeilen aus der urspruenglichen Datei holen:
sort -k2 datei | uniq -f1 -d | tr -s ' ' | cut -f2 -d ' ' | \ xargs -i grep {} datei
Je nachdem wie gross die Datei ist und wie oft das grep aufgerufen wird kann die Ausfuehrung etwas dauern. Wie Jürgen schon schrieb, Perl ist ideal fuer komplexere Arbeiten an Textdataien.
Michael
Danke an alle , die hier geantwortet haben - da ja kaum ein normaler Mensch alle varianten / möglichkeiten / Programme unter Linux kennen kann - und die informationssuche im www ( zb via Google ) bei solch " schwammigen themen " auch nicht gerade ideal iss ( nach was soll man da auch suchen lassen, um zum richtigen ergebnis zu kommen ? ), bietet sich nunmal eine ML geradezu an - da ja jeder, der daran mitmacht, andere Möglichkeiten kennt. Stimmt - ich benötige aus einer Gesamtliste nur die Zeilen, deren Artikelnummer !!! gleich ist ; die Beschreibung als Kriterium ist nicht so gut. zb : Lagerliste : Lager Lagerplatz Artikelnummer Beschreibung Artikel Menge 5 010101 10010010001 Artikel A 5 5 020102 10010010002 Artikel A 16 5 010403 10010010003 Artikel A 22 5 110101 10010010103 Artikel B 71 5 110201 10010010104 Artikel B 39 5 180206 10010010104 Artikel B 13 5 110201 10010010105 Artikel B 39 Grund : Die letzten beiden Ziffern der Artikelnummer = Grösse von daher ist keine Zeile völlig identisch ( Lagerplatz + Menge variieren - die Artikelbezeichnung ist bei jeder Grösse gleichbleibend ) Und wie Andreas schon schrieb :
Und nebenbei, er wollte IMHO beide zeilen ausgegeben haben, "|uniq ... -d" unterdrückt die eine/andere.
ich benötige in der von mir benötigten Liste alle zeilen , deren artikelnummer öfter als 1x vorkommt ( nicht nur 2x ( es kam schon vor, das 4 plätze gebucht waren, zb bei tippfehlern bei der erfassung ) ) wie groß die datei ist, kann ich so nicht sagen, da ich diese ja erst von der firma auf meinen pc überspielen muss ( die arbeiten mit win xp *grusel* ) aber bei 200 A4 Seiten bei Schriftgrösse 8 rechne ich nicht damit das die PDF unter 10 MB liegt. und nach der konvertierung ( ich glaube nicht das grep / uniq / perl was machen kann wenn ichs bei der pdf direkt versuche ) bestimmt auch nicht viel kleiner. der zeitliche aufwand ist relativ egal - mein PC ist ja ein "dauerrenner" ( momentan seit 2 monaten durchgehend uptime ) und wenn dann würde ich diese "bearbeitung" via script machen lassen, wo ich dieses dann zb abends starte - und am nächsten morgen ( 7 std dürften garantiert reichen *grins* ) ist die filterung beendet. nur wollte ich erst einmal die machbarkeit einer solchen filterung abklären, bevor ich daran gehe, diese datei zu überspielen ( sonst wär der aufwand ja völlig umsonst ) Also : Noch einmal ein herzliches Danke an alle und einen schönen Sonntag. - -- Be careful of reading health books, you might die of a misprint. -- Mark Twain - -------------------------------------------------------- Registierter Linux - User #177159 ICQ - UIN : 51735624 HP : http://www.LinuxCobra.de eBay : http://members.ebay.de/aboutme/linuxcobra PGP-Key Server : http://blackhole.pca.dfn.de - -------------------------------------------------------- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux) iD8DBQE/bXmrkAiRDZSEUCwRApuCAJ99xTWIIk/iuBoN7/q3b6Pp4dCHqACfYFV+ hoMPr4Zm8pvyPtkGfqpnH/0= =dj5R -----END PGP SIGNATURE-----

Dr. Jürgen Vollmer wrote:
ideal wäre zb folgendes : pdf > konvertieren, zb html oder besser ascii pur dann zb via grep ( falls es da ne möglichkeit gibt ) alle zeilen löschen lassen, die in der 2. spalte nur 1x genannt werden , so das nur noch die zeilen übrig bleiben , die ein x-faches ( meist 2x , aber auch 3-4 mal kann vorkommen ) vorkommen haben, übrig bleiben.
man sortiert (sort) nach dem entsprechenden Feld und lässt dann uniq drauf los. sort - sort lines of text files uniq - remove duplicate lines from a sorted file
sort -k2 datei | uniq -f 1 -d
Voraussetzung: bei gleicher Artikelnummer ist die Beschreibung auch gleich.
Hmm, könntest Du bitte Deinem Mailclient beibringen, den Thread nicht aufzureissen? Und nebenbei, er wollte IMHO beide zeilen ausgegeben haben, "|uniq ... -d" unterdrückt die eine/andere. -- Andreas

Marco Jäger wrote:
und falls jemand nicht weiß was ich will *G* >>>
- --------Lagerliste original ----- 010101 10010010001 Beschreibung Artikel 020102 10010010002 Beschreibung Artikel 010403 10010010003 Beschreibung Artikel 071101 10010010004 Beschreibung Artikel 193308 10010010004 Beschreibung Artikel 163203 10010010005 Beschreibung Artikel 147705 10010010006 Beschreibung Artikel - -------------- nach "filterung" : - -------- 071101 10010010004 Beschreibung Artikel 193308 10010010004 Beschreibung Artikel - -------
nun meine frage : da die konvertierung ja das vermutlich kleinere problem ist ... ist eine solche "filterung" machbar ???
# uniq -f 1 -D lagerliste -- Andreas
participants (4)
-
Andreas Winkelmann
-
Dr. Jürgen Vollmer
-
Marco Jäger
-
Michael Siefritz