Warum soll das nicht gehen ...?
Sowohl bei awk als auch bei den neueren bash- Shells kann der Index für ein Array beliebiger Text sein.
Wenn Du also die Feldnummer anpasst, kannst Du das Skript direkt dafür nehmen. Probier es doch einfach.
LG,
track
![]() Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
Warum soll das nicht gehen ...? Sowohl bei awk als auch bei den neueren bash- Shells kann der Index für ein Array beliebiger Text sein. Wenn Du also die Feldnummer anpasst, kannst Du das Skript direkt dafür nehmen. Probier es doch einfach. LG, track |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 6990 Wohnort: 29614 Soltau |
Die Feldnummer aus der Benennungsspalte $3, habe ich angepasst. 028 002908 STABILO ROLLERBALL 2018/36 GN 2018-36 STK 10 2 1 10 0000042119180 12 054 546 F LAGER 028 003343 SAMSUNG TONER CLP510D7K/ELS SCHWARZ CLP510D7K/ELS STK 1 2 1 3 8808979362868 01 064 34 Die LISTE-HERSTELLER-LEERZEICHEN.txt habe ich entsprechend angepasst STABILO SCHWAN-STABILO STABILO STABILO STABILO STABILO INTERNATIONAL GMBH STABILO STABILOS SAMSUNG SAMSUNG Das awk-Script sieht so aus
Funktioniert aber so nicht. Was habe ich da falsch gemacht? Grüße Nobuddy |
||||
![]() Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
Was heißt das ...? Macht er gar nichts, trägt er Schrott ein, gibt's 'ne Fehlermeldung ? Bei Deinem Beispiel steht im Feld 3: "STABILO ROLLERBALL 2018/36 GN" - das ist natürlich nicht nur der Hersteller. track |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 6990 Wohnort: 29614 Soltau |
Hersteller wird nicht erkannt, daher auch kein Eintrag in der Herstellerspalte.
Das habe ich ja gemeint, am Anfang der Benennungsspalte (Produktbezeichnung) suchen. Also in "STABILO ROLLERBALL 2018/36 GN" nach "STABILO" suchen, dabei soll immer nur von links ab verglichen werden. Nicht so "ROLLERBALL STABILO 2018/36 GN" Grüße Nobuddy |
||||
![]() Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
Das Thema hatten wir doch ganz oben schon mal: die Produktbezeichnung aufzuspalten in 2 Felder, den Hersteller und den Produktnamen. Klar, dass Dein Skript bei der Produktbezeichnung nie ein leeres Feld findet (→ Du müsstest erstmal verraten (oder überlegen), was Du denn jetzt überhaupt machen willst, denn leere Herstellerfelder gibt es hier ja gar nicht. track |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 6990 Wohnort: 29614 Soltau |
Das Feld 3 ist das Benennungsspalte (Produktbezeichnung), also dieses STABILO ROLLERBALL 2018/36 GN Die Produktbezeichnung aufspalten, so daß das erste Wort für den Vergleich verwendet wird, wäre eine Lösung. Nur wie mache ich das innerhalb des awk-Scriptes? Habe ja unter BEGIN den Feldtrenner \t schon angegeben und das Feld 3 hat ja " " Leerzeichen als Trenner. |
||||
![]() Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
Es gibt innerhalb von awk auch String-Ersetzung, mit der man alles hinter dem Leerzeichen wegschneiden kann: hBez= gensub(" .*","",$3); Da gibt es ein hübsches Nachschlagewerk für awk auf deutsch: http://www.ostc.de/awk.pdf track |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 6990 Wohnort: 29614 Soltau |
Mit
funktioniert es bei mir nicht, Herstellerspalte bleibt leer. Ich habe vorhin schon mit split herum experimentiert, habe ich hier http://spielwiese.la-evento.com/xelasblog/archives/5-Strings-bearbeiten-mit-gawk.html gesehen. Momentan, habe ich es so
, was aber dann statt in die Herstellerspalte, in die erste Spalte voran anfügt. |
||||
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 6990 Wohnort: 29614 Soltau |
Nach weiterem Herumprobieren, habe ich dies als Lösung
Funktioniert prima. ☺ So langsam, komme ich mehr und mehr dahinter ... 😉 Danke und Grüße Nobuddy |