Archiv verlassen und diese Seite im Standarddesign anzeigen : sortieren nach string-länge
ich will die zeilen einer datei nach der zeilenlänge sortieren (bash)
cat datei|sort
"sort" sortiert ja leider nur alphabetisch oder numerisch, oder?
BLUESCREEN3D
18-07-2007, 00:51
Du könntest die Länge jeder Zeile an den Anfang der Zeile schreiben, das ganze sortieren und die Zeilenlängen wieder entfernen:
while read line; do
echo "$(echo -n "$line" | wc -c) $line"
done | sort -n | cut -d ' ' -f 2-
Du könntest die Länge jeder Zeile an den Anfang der Zeile schreiben, das ganze sortieren und die Zeilenlängen wieder entfernen:
while read line; do
echo "$(echo -n "$line" | wc -c) $line"
done | sort -n | cut -d ' ' -f 2-
Als Alternative awk, damit braucht man nicht je Zeile einen eigenen wc aufzurufen:
awk ' { print length($0),$0; } ' $DATEI | sort -n | cut -d' ' -f2- Das sollte sich besonders bei großen Dateien positiv auf die Performance auswirken, außerdem kann man innerhalb des awk noch nützliche Dinge tun, wie Leerzeichen abschneiden usw.
Jan
ah, darauf bin ich noch garnicht gekommen, habe die ganze zeit nur krampfhaft versucht nen befehl zu finden.
ich danke euch!
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.