Peter Steffinger schrieb:
Hallo Martin
Am Sonntag, 29. August 2010, 18:16:18 schrieb Martin Blank:
Meine selbst erarbeitete Lösung istfolgende (alles afu einer Zeile): ls -l | tr -s ' ' '\t' | while read a ; do echo -ne "`echo ${a} | tr -s ' ' '\t' | cut -f 5`\t" ; echo "${a}" ; done | sort -n | cut -f 2-
Die Lösung des Autors ist folgende: ls -l | tr '\t' ' ' | tr -s ' ' ' ' | sort -t ' ' -n -k 5,5
Kann mir jeman nochmal genauer erklären was da abläuft? das -k und diese 5,5 kapiere ich nicht so recht.
-k gibt die Spalten (erst,letzte) an die für die Sortierung beachtet werden sollen. Hier: erste=5, letzte=5 also 5,5. Durch tr -s ' ' ' ' werden aufeinander folgenden Leerzeichen zu einem zusammengefasst.
Ok, dann verstehe ich diesen Teil nun. Schon mal danke dafür.
Und warum nimmt man nicht gleich? ls -l | tr -s ' ' '\t' | sort -t '?' -n -k 5,5 (an Stelle des Fragezeichens natürlich das Tabulatorzeichen, das ich leider auch nicht recht weis.)
Damit wird jedes Leerzeichen durch ein Tab ersetzt. Es ist fraglich, ob dann die Dateigrösse immer noch für jede Zeile in der 5-ten Spalte läge.
An anderer Stelle im Buch verwendet der Autor in einem anderen Zusammenhang tr -s ' ' '\t' und beschreibt dazu das dabei mehrere Leerzeichen zu einem zusammengezogen werden und somit nur durch ein Tab ersetzt werden. Ich dachte, das das Problem eher darin liegt, das sort kein Tab als Trenner kann.
In mindestens einer Beschreibung habe ich für die Option -t gelesen, dass Tab der Default-Trenner ist. Die Manpage spricht allerdings nur von "non-blank to blank transition". Weil die Trennung von Spalten aber eine übliche Methode ist, erscheint es als wenig sinnvoll, sollte sort es nicht verwenden können. -- Mit freundlichen Grüßen Martin Blank -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org