• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] sortieren innerhalb einer datei

hallo,
habe ein kleines problem
möchte den inhalt einer datei sortieren:
folgender befehl:
Code:
michael@puma:~$ sort sortiert1
jetzt wird aber der inhalt auf den bildschirm ausgegeben, ich möchte aber nur das der inhalt in der datei sortiert wird und nicht auf dem bildschirm ausgegeben wird
Wie geht das?
 
Code:
sort sortiert1 | cat - > sortiert1
funktioniert auch.

Der Weg über eine Temporäre-Datei ist allerdings besser (siehe Post von notoxp).
 

regexer

Advanced Hacker
notoxp schrieb:
Interessante Lösung, allerdings scheint das sehr Linux-spezifisch zu sein. Auf Solaris funktioniert das z.B. nicht so.
Ich sehe gerade: Auf solaris bietet sort eine Option an, mit der es auch ohne manuelle Umleitung in eine Datei geht. Ich habe aber gerade leider kein Linux zur Hand um zu sehen, ob es da auch soetwas gibt...
man sort@solaris schrieb:
/usr/xpg4/bin/sort
...
-o output Specifies the name of an output file to be
used instead of the standard output. This
file can be the same as one of the input
files.
 
b3ll3roph0n schrieb:
sort sortiert1 | cat - > sortiert1
Das ist höchst abhängig vom Scheduler, und ob sort den Inhalt lesen kann, bevor bash den fd zu sortiert1 öffnet. Denn generell ist der Funktionsablauf (vereinfacht):
Code:
int pp[2];
pipe(pp);
if(fork == 0) {
    dup2(pp[1], STDOUT_FILENO);
    execle("sort", ...);
}
if(fork == 0) {
    dup2(pp[0], STDIN_FILENO);
    close(STDOUT_FILENO);
    open("sortiert1", O_WRONLY | O_TRUNC); /* => STDOUT_FILENO */
    execle("cat", ...);
}
IIRC wird unter Linux der mit fork() erzeugte Kindesprozess zuerst vor dem Elternprozess (bash) geschedult, weshalb es in gewissen Fällen gehen kann. Aber Fallen gibt es: Multiprozessoren/-kerne oder Shells, die die Prozesse in umgekehrter Reihenfolge forken. (Nicht dass ich von letzterer Sorte welche kenne, aber die Möglichkeit gibt es ja.)
 

regexer

Advanced Hacker
Blackscreen schrieb:
Die gibts bei Linux auch ;)
Wenn ich mich recht entsinne gibt es auch noch einen Parameter, der ein eigenes Tempfile festlegt. Das braucht man für das Sortieren sehr großer Datenengen. Vielleicht geht es auch damit...
 
Oben