Aufgabe 2 - sort / diff

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

aufgabe 2 - sort / diff
hi,

wie bringe ich das ergebnis meiner sortierung in eine datei? mit
less wlist | wsort
bringe ich es immerhin schon auf den bildschirm, aber damit ich es mit diff vergleichen kann, muss es in einer datei sein. dasselbe gilt auch fuer den
sort wlist
aufruf, denke ich.
btw: es scheint normal zu sein, dass er umlaute nach z sortiert, oder?


mit:
less wlist | wsort > dateiname
leitest du den output in eine datei um. dabei wird diese datei mit > jedesmal vorher gelöscht, mit >> hängst du ans ende an.

da war wohl jemand nicht in der Sysprog Übung :-p


ah stimmt ja!
1000 dank, war aber natuerlich schon in sysprog-uebung (btw das beste fach und die beste uebung in diesem semester und vielleicht ueberhaupt), hatte das bloss schon wieder vergessen, weil ich (noch ?) nicht so der guru bin.
das macht sich auch darin bemerkbar, dass ich mit “rm w*” alle wlisten loeschen wollte und dabei natuerlich auch noch den quellcode namens wsort.c geloescht habe :smiley: . das macht spass, nach etwa 3 stunden arbeit und rumprobieren. aber egal, ich hab ja noch alles im kopf - hoffentlich.


in welcher übung biste denn ?


ich weiss nicht ob das mit less funktioniert weil less eigentlich ein pager ist;

zB

wsort < wlist5 > /tmp/result.wsort
sort < wlist5 > /tmp/result.sort

diff /tmp/result.wsort /tmp/result.sort

sollte dann im idealfall leer bleiben; bei mir weicht übrigens das ergebnis von sort ab, weiss aber nicht ob ich irgendwas in meinem 0815 wsort verhunzt hab :wink:


wieso sollte es nicht funktionieren?

stdin ist stdin und stdout ist stdout.
Wir haben doch gelernt, dass das alles völlig transparent ist.


weil less nicht sofort alles auf stdout kotzt sondern wartet bis der user scrollt… dafür ist es auch da. cat wär glaub dafür eher geeignet aber ich nehm an du hast es mit less ausprobiert (ok funktioniert habs auch probiert :wink: )


danke erstmal fuer die ganzen tips!
habe das ganze jetzt nochmal geschrieben und wenn ich es ohne optionen kompiliere, funktioniert auch alles und es arbeitet korrekt. wenn ich alle optionen angebe, kommt folgendes:

wsort(.rodata+0x0): multiple definition of `_fp_hw'
/usr/lib/crt1.o(.rodata+0x0): first defined here
wsort: In function `_init':
wsort(.init+0x0): multiple definition of `_init'
/usr/lib/crti.o(.init+0x0): first defined here
wsort: In function `_start':
wsort(.text+0x0): multiple definition of `_start'
/usr/lib/crt1.o(.text+0x0): first defined here
wsort: In function `_fini':
wsort(.fini+0x0): multiple definition of `_fini'
/usr/lib/crti.o(.fini+0x0): first defined here
wsort(.got+0x0): multiple definition of `_GLOBAL_OFFSET_TABLE_'
/usr/lib/crt1.o(.got.plt+0x0): first defined here
wsort(.rodata+0x4): multiple definition of `_IO_stdin_used'
/usr/lib/crt1.o(.rodata+0x4): first defined here
wsort: In function `__data_start':
wsort(.data+0x0): multiple definition of `__data_start'
/usr/lib/crt1.o(.data+0x0): first defined here
/tmp/cc1RZhXT.o: In function `main':
/tmp/cc1RZhXT.o(.text+0x0): multiple definition of `main'
wsort(.text+0xe0): first defined here
/tmp/cc1RZhXT.o: In function `compare':
/tmp/cc1RZhXT.o(.text+0x244): multiple definition of `compare'
wsort(.text+0x324): first defined here
/usr/lib/crt1.o(.dynamic+0x0): multiple definition of `_DYNAMIC'
wsort(.dynamic+0x0): first defined here
collect2: ld returned 1 exit status
make: *** [wsort] Error 1

was sagt mir das? das kommt doch nicht direkt vom compiler, oder?
thx im voraus!


buhu, kann mir da niemand helfen schnief?


klingt merkwuerdig diese Meldung, Das Programm das sich beschwert ist der linker ld:

collect2: ld returned 1 exit status

Bei linker-Meldungen muss man im Gegensatz zu den Compilermeldungen (bei denen meist der oberste gemeldete Fehler verantwortlich ist fuer viele Folgefehler) den ganzen Fehlertext nach Teilen durchsuchen, die in euren Dateien vorkommen.
Der findet viele Funktionen mehrfach, unter anderem deine main und deine compare. Linkst du 2 .o files von dir zu einer wsort? Benutzt du den ld in deinem makefile? dann versuchs mal ohne den Umweg ueber die die .o Datei. auch ein make clean (= loeschen von .o und ausfuehrbarer Datei) kann bei sowas manchmal helfen.


vielen dank!
finde ich schon komisch, dass das loeschen der ausfuehrbaren datei und neukompilieren einen anderen effekt hat als nur neukompilieren. er hat danach tatsaechlich andere fehlermeldungen gebracht!
dann hab ich meinen fehler gefunden: ohne -o kompilieren geht dann halt doch recht schlecht peinlich und da das die ganze zeit im makefile drin war, hab ichs nicht gemerkt :[. also danke nochmal!