awk-Frage: zwei Dateien zusammenführen
![](https://seccdn.libravatar.org/avatar/1cf53bbe68141b5c35a0b6ed309cf54b.jpg?s=120&d=mm&r=g)
Hallo zusammen, ich hätte da mal wieder ne Frage zu awk. Es müssen zwei Dateien zu einer vereinigt werden, und im Moment mache ich es so: while read line; do awk /$line/ '{ … }' /pfad/datei2 … done < /pfad/datei1 Daran gefällt mir nicht, daß ich awk und bash mische. Kann man das nicht auch gleich von awk erschlagen lassen? Konkret gehts darum: Datei1: ID Name ========== 1 Andre 2 Barbara Datei2: NutzerID Gegenstand ======================== 1 Telefon 1 Laptop 2 Telefon 1 DVD-Player Daraus soll nun werden: ID Name Gegenstände ========================= 1 Andre Telefon;Laptop;DVD-Player 2 Barbara Telefon Geht das in einem AWK-Skript? Danke+Gruß! -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/8b2d54644cef73ce8a48191e9479c86d.jpg?s=120&d=mm&r=g)
Hallo Andre, On Tuesday, 22.November.2011 09:23:24 Andre Tann wrote:
Kann man das nicht auch gleich von awk erschlagen lassen?
Oder von der Bash mit Hilfe der guten alten UNIX-Tools? Nur mal ein Ansatz: $ cat Datei1 1 Andre 2 Barbara $ cat Datei2 1 Telefon 1 Laptop 2 Telefon 1 DVD-Player $ join <(sort Datei1) <(sort Datei2) 1 Andre DVD-Player 1 Andre Laptop 1 Andre Telefon 2 Barbara Telefon Roman -- Roman Fietze Telemotive AG Buero Muehlhausen Breitwiesen 73347 Muehlhausen Tel.: +49(0)7335/18493-45 http://www.telemotive.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/1cf53bbe68141b5c35a0b6ed309cf54b.jpg?s=120&d=mm&r=g)
Roman Fietze, Dienstag, 22. November 2011:
Oder von der Bash mit Hilfe der guten alten UNIX-Tools?
Nur mal ein Ansatz:
$ cat Datei1 1 Andre 2 Barbara $ cat Datei2 1 Telefon 1 Laptop 2 Telefon 1 DVD-Player $ join <(sort Datei1) <(sort Datei2) 1 Andre DVD-Player 1 Andre Laptop 1 Andre Telefon 2 Barbara Telefon
Das Problem bei dieser Lösung ist, daß jede Zeile in Datei1 vervielfacht wird, je nachdem, wie oft der Wert in Datei2 vorkommt. Ich brauch aber sowas: 1 Andre Telefon;Laptop;DVD-Player Da hab ich jedenfalls mit meinem Kenntnisstand keine Idee, wie man das sozusagen Einzeilermäßig mit den Standard-Tools erschlagen könnte. Wenn Du da einen Weg siehst - nur her damit. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/1542fe9857ecb6d31bfad27d68b3ac37.jpg?s=120&d=mm&r=g)
Am Dienstag, 22. November 2011, 10:12:41 schrieb Andre Tann:
Roman Fietze, Dienstag, 22. November 2011:
Oder von der Bash mit Hilfe der guten alten UNIX-Tools?
Nur mal ein Ansatz:
$ cat Datei1 1 Andre 2 Barbara $ cat Datei2 1 Telefon 1 Laptop 2 Telefon 1 DVD-Player $ join <(sort Datei1) <(sort Datei2) 1 Andre DVD-Player 1 Andre Laptop 1 Andre Telefon 2 Barbara Telefon
Das Problem bei dieser Lösung ist, daß jede Zeile in Datei1 vervielfacht wird, je nachdem, wie oft der Wert in Datei2 vorkommt. Ich brauch aber sowas:
1 Andre Telefon;Laptop;DVD-Player
Da hab ich jedenfalls mit meinem Kenntnisstand keine Idee, wie man das sozusagen Einzeilermäßig mit den Standard-Tools erschlagen könnte. Wenn Du da einen Weg siehst - nur her damit.
Nach dem 'sort' kannst Du 'uniq' durchlaufen lassen. Das sollte das problem loesen. MfG Th. Moritz -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/638c5f9b9a41e53d4663197a58261c49.jpg?s=120&d=mm&r=g)
Hallo, Am Tue, 22 Nov 2011, Andre Tann schrieb:
ich hätte da mal wieder ne Frage zu awk. Es müssen zwei Dateien zu einer vereinigt werden, und im Moment mache ich es so:
while read line; do
awk /$line/ '{ ... }' /pfad/datei2 ... done < /pfad/datei1
Daran gefällt mir nicht, daß ich awk und bash mische. Kann man das nicht auch gleich von awk erschlagen lassen?
Freilich. $ cat 1.txt ID Name ========== 1 Andre 2 Barbara $ cat 2.txt NutzerID Gegenstand ======================== 1 Telefon 1 Laptop 2 Telefon 1 DVD-Player $ gawk -f t.awk 1.txt 2.txt ID Name Gegenstände =================================== 1 Andre Telefon;Laptop;DVD-Player 2 Barbara Telefon ==== t.awk ==== #!/usr/bin/gawk -f BEGIN { getline; if( $0 ~ /ID/ ) { getline; } if( $0 ~ /^[[:space:]]*=+[[:space:]]*$/ ) { getline; } while( FNR > 1 ) { ids[$1] = $2; getline; }; } /^[[:space:]]*=+[[:space:]]*$/ { next; } { items[$1] = items[$1] ";" $2; } END { printf("%2s\t%-15s\t%s\n", "ID", "Name", "Gegenstände"); print "==================================="; for(id in ids) { sub("^[[:space:]]*;", "", items[id]); printf("%2i\t%-15s\t%s\n", id, ids[id], items[id]); } } ==== Den Dateiwechsel könne man auch daran erkennen, daß die Variable FNR wieder auf 1 springt. Dann kann man's sogar unabhängig von der Reihenfolge der Dateien machen: ==== t.awk ==== #!/usr/bin/gawk -f FNR == 1 { # wir sind bei ner neuen Datei # Datei mit Tabelle für ID -> Name? if( $0 ~ /Name/ ) { IDDATEI = 1; } else { IDDATEI = 0; } getline; next; # "===" Zeile überspringen } # ID-Tabelle einlesen IDDATEI == 1 { ids[$1] = $2; } # Gegenstand einlesen IDDATEI == 0 { items[$1] = items[$1] ";" $2; } END { printf("%2s\t%-15s\t%s\n", "ID", "Name", "Gegenstände"); print "==================================="; for(id in ids) { sub("^[[:space:]]*;", "", items[id]); printf("%2i\t%-15s\t%s\n", id, ids[id], items[id]); } } ==== $ awk -f t.awk 1.txt 2.txt ID Name Gegenstände =================================== 1 Andre Telefon;Laptop;DVD-Player 2 Barbara Telefon $ awk -f t.awk 2.txt 1.txt ID Name Gegenstände =================================== 1 Andre Telefon;Laptop;DVD-Player 2 Barbara Telefon Du mußt halt bei der Erkennung der "Id-Datei" aufpassen, daß das $0 ~ /Name/ eindeutig ist und bleibt. HTH, -dnh -- Oh, I am a C programmer and I'm okay I muck with indices and structs all day And when it works, I shout hoo-ray Oh, I am a C programmer and I'm okay [BSD fortune file] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/1cf53bbe68141b5c35a0b6ed309cf54b.jpg?s=120&d=mm&r=g)
Moin, David Haller, Dienstag, 22. November 2011:
==== t.awk ==== #!/usr/bin/gawk -f
...nachdem ich mich jetzt eine gute Weile durchgegraben habe und Deine ganzen Annahmen kapiert habe, versteh ichs. Natürlich ist es in echt noch etwas komplizierter. Aber nachdem ich es verstanden hatte, konnte ich es sogar anpassen. Wieso nur fallen mir die AWK-Dinger immer so schwer... Danke fürs bauen! -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/638c5f9b9a41e53d4663197a58261c49.jpg?s=120&d=mm&r=g)
Hallo, Am Tue, 22 Nov 2011, Andre Tann schrieb:
David Haller, Dienstag, 22. November 2011:
==== t.awk ==== #!/usr/bin/gawk -f
...nachdem ich mich jetzt eine gute Weile durchgegraben habe und Deine ganzen Annahmen kapiert habe, versteh ichs.
Äh, eigentlich hab ich nur genau das angenommen was du geschrieben hattest, und dann noch (bei der zweiten Version) ergänzt um ne bel. Reihenfolge der Dateien. Meinst du daß vor dein Einträgen "whitespace" ein kann? Oder daß ich das Format der Dateien als *FELDNAME1 FELDNAME2 ... *========================= *EINTRAG1 .... annahm? Selber schuld :-P
Natürlich ist es in echt noch etwas komplizierter.
Im Zweifelsfall: nicht vereinfachen, einen realen Auszug (3-10 Datensätze, je nach Varianz der Daten) erstellen, ggfs. per abgespeichertem(!) sed-script strings (Namen, Firmennamen, Domains etc.) für dich nachvollziehbar und für "uns" konsistent ersetzen... ==== make-foo-anon.sed ==== #!/bin/sed -f s/foo.de/domain1.tld/g; s/bar.com/domain2.tld/g; ... y/1234567/5764312/g; ### für numerische Daten z.B. wie Pat. Nr.[0] ==== [0] könnte man auch durch (Pseudo-) Zufallszahlen ersetzen, kommt halt drauf an. Die Datensätze an sich sind ja meist für Außenstehende nichtssagend. Bei z.B. medizinischen, Address-Daten usw. sollte man auch da ein sed drüberlaufen lassen.
Aber nachdem ich es verstanden hatte, konnte ich es sogar anpassen.
Prima :)
Wieso nur fallen mir die AWK-Dinger immer so schwer...
Ist halt ne richtige Scriptsprache. Für "größeres" mag ich ja am liebsten perl, aber für so einfaches Textgewurstel ist awk doch oft sehr praktisch und passend :) Wenn man dann noch vorgefertigtes wie getopt per -f / -W source und AWKPATH reinzieht (oder auch schlicht die awk-Datei in sein Script kopiert, siehe z.B. /usr/share/awk ;), dann auch für mehr ... Man muß halt mal die manpage lesen (z.B. das mit dem FNR == 1), um etwa zu wissen was möglich ist und dann bei Bedarf die Details nachgucken ;)
Danke fürs bauen!
Gern. Die anderen Beiträge im Thread haben natürlich auch angestachelt. Als ob das nicht (elegant und schnell) mit awk ginge ... *PAH!* :) -dnh -- Documentation: Cryptic, lacking, erroneous. Pick any three. -- if it was'nt me, it could be -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/1cf53bbe68141b5c35a0b6ed309cf54b.jpg?s=120&d=mm&r=g)
David Haller, Dienstag, 22. November 2011:
Äh, eigentlich hab ich nur genau das angenommen was du geschrieben hattest,
Ja, klar. Aber zum Beispiel das Bilden des Arrays (funktioniert nur, weil ID eindeutig ist), die Notation while(FNR > 1) (funktioniert nur, weil es einleitende Zeilen gibt), usw.
Im Zweifelsfall: nicht vereinfachen, einen realen Auszug (3-10 Datensätze, je nach Varianz der Daten) erstellen, ggfs. per abgespeichertem(!) sed-script strings (Namen, Firmennamen, Domains etc.) für dich nachvollziehbar und für "uns" konsistent ersetzen...
Och, das wär aber dann fad. Dann hätte ich ja gar nix mehr anzupassen gehabt. Hätte das Skript kopiert, hätte funktioniert, und ich wär wieder nicht schlauer gewesen.
Die Datensätze an sich sind ja meist für Außenstehende nichtssagend. Bei z.B. medizinischen, Address-Daten usw. sollte man auch da ein sed drüberlaufen lassen.
Es sind Adressen, Bankverbindungen usw. mit ca. 200 Spalten, da wäre unkenntlich machen und auch posten mühsam geworden...
Man muß halt mal die manpage lesen (z.B. das mit dem FNR == 1), um etwa zu wissen was möglich ist und dann bei Bedarf die Details nachgucken ;)
Die manpage hilft mir nicht mit meinem Double-Quotes-Problem von nebenan (oder ich seh es zumindest nicht)... Wenn Du da noch nen Tip hättest? -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/1cf53bbe68141b5c35a0b6ed309cf54b.jpg?s=120&d=mm&r=g)
David Haller, Dienstag, 22. November 2011:
==== t.awk ====
...noch eine Frage: wie weise ich mit AWK " zu? Also awk { print "Hallo" } soll "Hallo" auswerfen, und nicht Hallo Komme da grad mit den Escapes nicht hin, "\"Hallo\"" hilft nicht, '"Hallo"' auch nicht - wie gehts? -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/638c5f9b9a41e53d4663197a58261c49.jpg?s=120&d=mm&r=g)
Hallo, Am Tue, 22 Nov 2011, Andre Tann schrieb:
David Haller, Dienstag, 22. November 2011:
==== t.awk ==== ...noch eine Frage: wie weise ich mit AWK " zu? Also awk { print "Hallo" } soll "Hallo" auswerfen, und nicht Hallo Komme da grad mit den Escapes nicht hin, "\"Hallo\"" hilft nicht,
Doch.
'"Hallo"' auch nicht - wie gehts?
Kommt auf die Quoting-Ebene an. Auf der Kommandozeile ist's generell schwierig. Wenn du awk aus nem bash-script aufrufst kann ich dir empfehlen den ganzen Kladderadatsch gleich komplett als awk (selten) oder perl Script zu schreiben. Kurzfassung: Quoting in awk ist die Hölle. $ awk 'BEGIN { print "\"Hallo\"";}' "Hallo" Falls das nicht reicht: meld dich per PM mit mehr Details! Und als Vorwarnung: ruf awk nicht für Einzeiler auf der Konsole auf, spätestens wenn du in awk \ oder ' brauchst wirst du kirre mit dem Quoting. Falls du nicht sowieso mehr im awk machen kannst statt in der shell. Ansonsten hilft nur verpacken in ein echtes awk-script oder man macht das ganze Gedöns (inkl. dem, was man bisher auf der Shell gemacht hat!) mit perl. -dnh PS: /me hat ein ~/helping mit 1.4GB aus >10 Jahren voll Krams (wohl v.a. Testdaten, ein kl. Teil von mir reinkopiert, meist aber auch nicht :) Und du hast eh schon ein Verz. in dem Verz. Soll heißen: aa biißerl mehr Details bittschee, und wann's irgnd gooht, a Beiispuil realer Daten ;) Uund froog mii nööd, woruum i dui ois aan Weanr (o.ä.) lößnd du, wo du doch goa nöd do online goosd ;) (und du auch sonst nicht durch Austriazismen aufgefallen bist, IIRC, waas woaß ii, i ben blad). -- Jack O'Neill: What do you want? Apophis: To live. Jack O'Neill: I can't help you there. That's between you and your god. Oh, wait a minute. You are your god. That's a problem. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/1cf53bbe68141b5c35a0b6ed309cf54b.jpg?s=120&d=mm&r=g)
David Haller, Dienstag, 22. November 2011:
Komme da grad mit den Escapes nicht hin, "\"Hallo\"" hilft nicht,
Doch.
'"Hallo"' auch nicht - wie gehts?
Kommt auf die Quoting-Ebene an. Auf der Kommandozeile ist's generell schwierig. Wenn du awk aus nem bash-script aufrufst kann ich dir empfehlen den ganzen Kladderadatsch gleich komplett als awk (selten) oder perl Script zu schreiben. Kurzfassung: Quoting in awk ist die Hölle.
Komisch, jetzt gehts bei mir auch. Muß gestern wohl irgendwas anders gewesen sein, jedenfalls kam immer ne Fehlermeldung "\ ist nicht das letzte Zeichen auf der Zeile". Weiß ich jetzt auch nicht mehr sicher.
Und als Vorwarnung: ruf awk nicht für Einzeiler auf der Konsole auf, spätestens wenn du in awk \ oder ' brauchst wirst du kirre mit dem Quoting. Falls du nicht sowieso mehr im awk machen kannst statt in der shell. Ansonsten hilft nur verpacken in ein echtes awk-script oder man macht das ganze Gedöns (inkl. dem, was man bisher auf der Shell gemacht hat!) mit perl.
Wie kann man denn Variablen setzen, wenn man es als awk-File aufruft? Das hier funktioniert nicht: FS="\t" BEGIN { … } Jedenfalls wird so nicht der field separator gesetzt. Warum nicht?
PS: /me hat ein ~/helping mit 1.4GB aus >10 Jahren voll Krams (wohl v.a. Testdaten, ein kl. Teil von mir reinkopiert, meist aber auch nicht :) Und du hast eh schon ein Verz. in dem Verz. Soll heißen: aa biißerl mehr Details bittschee, und wann's irgnd gooht, a Beiispuil realer Daten ;) Uund froog mii nööd, woruum i dui ois aan Weanr (o.ä.) lößnd du, wo du doch goa nöd do online goosd ;) (und du auch sonst nicht durch Austriazismen aufgefallen bist, IIRC, waas woaß ii, i ben blad).
Öh... Weanarisch koni ned, aba boarisch. Jetz sogamoi, wia konnsdn Du mit sovui Dadn no wos ofanga? Wennsd wos suachsd, liesd na oiwei de oanskommavia Gigabeit an Dadn duach? Wei wennsd wissadsd, wonachsd greppm soisd, na häddads ja scho die Lösung. Gruas, Andre -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/1cf53bbe68141b5c35a0b6ed309cf54b.jpg?s=120&d=mm&r=g)
Andre Tann, Dienstag, 22. November 2011:
...noch eine Frage: wie weise ich mit AWK " zu? Also
awk { print "Hallo" }
soll
"Hallo"
auswerfen
Für die Akten: So gehts: awk '{ print "\42Hallo\42" }' Viele Grüße! -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/1cf53bbe68141b5c35a0b6ed309cf54b.jpg?s=120&d=mm&r=g)
Hi David, David Haller, Dienstag, 22. November 2011: […]
Daran gefällt mir nicht, daß ich awk und bash mische. Kann man das nicht auch gleich von awk erschlagen lassen?
Freilich. […]
Jetzt wird das ganze doch noch etwas aufwendiger, und nun habe ich versucht, ob ich das in Perl abgebildet bekomme. Wie wäre denn ein vernünftiger Programmablauf? Ich stelle mir vor: Zuerst 1.txt in einen Hash einlesen, ID als Key-Spalte nehmen, als Value auf ein Array referenzieren. Dieses Array kriegt als erstes Element den Namen aus der Namensspalte, und als zweites Element einen String, der fortlaufend ergänzt wird, indem 2.txt eingelesen wird? Sorry, wenn das etwas wirr klingt, aber mir ist noch nicht so ganz klar, wie man Perls Hashes und Arrays sinnvoll einsetzen kann. Danke für etwas Erhellung! -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/638c5f9b9a41e53d4663197a58261c49.jpg?s=120&d=mm&r=g)
Hallo, Am Sun, 15 Jan 2012, Andre Tann schrieb:
David Haller, Dienstag, 22. November 2011: [...]
Daran gefällt mir nicht, daß ich awk und bash mische. Kann man das nicht auch gleich von awk erschlagen lassen?
Freilich. [...]
Jetzt wird das ganze doch noch etwas aufwendiger, und nun habe ich versucht, ob ich das in Perl abgebildet bekomme.
Wie wäre denn ein vernünftiger Programmablauf? Ich stelle mir vor:
Zuerst 1.txt in einen Hash einlesen, ID als Key-Spalte nehmen, als Value auf ein Array referenzieren. Dieses Array kriegt als erstes Element den Namen aus der Namensspalte, und als zweites Element einen String, der fortlaufend ergänzt wird, indem 2.txt eingelesen wird?
Das ist ja das was ich in awk gemacht habe. a2p macht aus meinem awk: ==== #!/usr/bin/perl eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if $running_under_some_shell; # this emulates #! processing on NIH machines. # (remove #! line above if indigestible) eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_0-9]+=)(.*)/ && shift; # process any FOO=bar switches #!/usr/bin/gawk -f $, = ' '; # set output field separator $\ = "\n"; # set output record separator $_ = &Getline0(); if ($_ =~ /ID/) { $_ = &Getline0(); } if ($_ =~ /^[[:space:]]*=+[[:space:]]*$/) { $_ = &Getline0(); } while (($.-$FNRbase) > 1) { $ids{$Fld[(1)-1]} = $Fld[(2)-1]; $_ = &Getline0(); } line: while (<>) { chomp; # strip record separator @Fld = split(' ', $_, -1); if (/^[[:space:]]*=+[[:space:]]*$/) { next line; } $items{$Fld[(1)-1]} = $items{$Fld[(1)-1]} . ';' . $Fld[(2)-1]; } continue { $FNRbase = $. if eof; } printf "%2s\t%-15s\t%s\n", 'ID', 'Name', 'Gegenstände'; print '==================================='; foreach $id (keys %ids) { $s = '^[[:space:]]*;', $items{$id} =~ s/$s//; printf "%2i\t%-15s\t%s\n", $id, $ids{$id}, $items{$id}; } sub Getline0 { $FNRbase = $. if eof; if ($getline_ok = (($_ = <>) ne '')) { chomp; # strip record separator @Fld = split(' ', $_, -1); } $_; } ==== Man müßte nur noch $items{} vom ;-separierten String auf ein Array umstellen und das dann per 'join' ausgeben. HTH, -dnh --
Ich habe das ausprobiert, aber wenn ich das auf yes stelle dann stürzt der PC beim Booten ab. Was Nun? Dann stell es am besten wieder auf "no". -- Betrefflose Frage und Antwort in suse-linux -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (4)
-
Andre Tann
-
David Haller
-
Roman Fietze
-
Thomas Moritz