PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Zeilen nach Zeilenlänge sortieren?



Linus
19-07-2009, 13:18
Ich benötige in einer Datei die Zeilen nach der Zeilenlänge sortiert, aber sort schafft das nicht :(
Wie bekommt man das Sortieren nach Zeilenlänge am Einfachsten realisiert? :confused:

BLUESCREEN3D
19-07-2009, 13:28
Suchmaschine: sort line length

Linus
19-07-2009, 17:27
Ok. In deutsch hatte ich gesucht, aber nichts gefunden.

DieterH
13-08-2009, 16:45
Mein Vorschlag:

1. Feststellen der Zeilenlänge und Abspeichern derselben VOR der jeweiligen Zeile. Für die Darstellung der Länge genügen 4 Dezimalziffern (was bedeutet, d.h. die maximale Zeilenlänge der Datei nicht größer als 9999 Bytes sein darf. Andernfalls Längenangabe im nachstehenden Skript einfach anpassen.)
2. Sortieren der erweiterten Datei. Da die Längenangabe VOR jeder Zeile steht, braucht es keine weiteren Angaben beim "sort"
3. Abstrippen der Längenangabe: Das gewünschte Ergebnis steht zur Verfügung.

Skript (Beispiel):

cat $datei | \
awk -F" " '{ printf("%04d%s\n",length($0),$0) }' | \
sort | \
awk -F" " '{ printf("%s\n",substr($0,5)) }' > datei-sortiert

Hinweis: "substr($0,5)" bedeutet: Ab Position 5 bis Zeilenende, d.h. die ersten vier Bytes (Längenangabe) werden ignoriert.

Gruss
Dieter