ksh: Sortieren von Arrays

Was bekommst du denn für eine Fehlermeldung?
Wie ermittelst du diesen Wert?
Eventuell musst du den Wert mal prüfen, ob der sich tatsächlich zu einem Integerwert auflöst.
In der Bash und mit
sort (coreutils) 5.2.1 geht es.

Gruß Wolfgang
PS es geht ja nicht um die Arraylänge, sondern um die Anzahl der zu sortierenden Felder (Feldtrenner ist der Punkt) eines Elementes aus dem Array.
 
Zuletzt bearbeitet:
Naja ich mach zuerst

l={#array}

nacher halt diesen echo + sort

........sort ......-k1,$l


komisch er sortiert es mir aber trotzdem richtig egel welchen wert ich nach k schreib... wie geht sowas?
 
Zuletzt bearbeitet:
Hallo

Der Wert wird so aber nicht hinhauen.
Noch mal ein Beispiel zum Verstehen:
Du brauchst für sort die Anzahl der Felder. Ein Feld wird bei dir durch einen Punkt begrenzt.
Ergo hat der Wert 1.2.3.4 drei Punkte und vier Felder.
Speichere ich den in ein Array, ist die Arraylänge aber 1.
$ A=(1.2.3.4 1.2.3.4.5.6);
$ echo ${#A}
7
$ echo ${#A[*]}
2
Siehst du den unterschied?
Im ersten Fall bekommst du die Länge des ersten Elementes, im zweiten die Anzahl der Elemente des Arrays. Aber selbst das ist nicht der Wert den du brauchst.
Der Wert für die Maximale Feldzahl für Sort wär hier 6.
Code:
$ A=(1.2.3.4 1.2.3.4.5.6);
$ B=(10.20.30.40.50 1.2.3.5.5.6.7.8.9);
$ MAX=$(($(for i in ${A[@]} ${B[@]}; do echo $i|tr -d "[:digit:]"; done |wc -L)+1));
$ echo "Das laengste Element hat $MAX Felder"
Das laengste Element hat 9 Felder

wc -L ermittelt das längste Element.
Wir verfüttern beide Arrays an tr.
Wir entfernen alle Ziffern, übergeben die verbliebenen Punkte an wc -L und zählen anschließend noch eins dazu.

Das ist nur eine von verschiedenen Möglichkeiten.
Hoffe du verstehst was ich meine.
Das musst du nun nur noch nach ksh portieren.

Gruß Wolfgang
 
Das lustige is es funzt auch ohne dem -k1,5

hab jetzt stehen -k1 und es funzt tip top


keine ahnung wieso

du?
 
buuuurn schrieb:
Das lustige is es funzt auch ohne dem -k1,5

hab jetzt stehen -k1 und es funzt tip top


keine ahnung wieso

du?
Hallo
Weil es bei dir optional ist.
Du willst ja nicht ein Feld auslassen oder von hinten sortieren.
So nimmt sort automatisch bei Gleichheit das nächste Feld, bis es zu einem Unterschied kommt.
Deshalb habe ich die maximale Feldzahl in meinem ersten Posting dazu nur angegeben, um dir die Möglichkeiten zu zeigen.

man sort ;)

Gruß Wolfgang
 

Ähnliche Themen

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

bash: Fehlermeldung und Werte in Array sortieren?

Squid als RPCoHTTPS Proxy für Outlook Anywhere

RUBY: Mehrdimensionale Arrays und Objekte

Wirkliches Includieren mit KSH

Zurück
Oben