ksh: Sortieren von Arrays

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von buuuurn, 07.07.2006.

  1. #1 buuuurn, 07.07.2006
    buuuurn

    buuuurn Jungspund

    Dabei seit:
    07.07.2006
    Beiträge:
    14
    Zustimmungen:
    0
    Hallo ich bin neu hier und wollte mal so die schnelle Hilfe hier testen.



    in dem Array steht folgendes
    z.B
    [0] = 4.5.3.2
    [1] = 2.3.2.1

    ich würde gerne aus 2 Arrays inden denne solche Sachen drinnen stehen die kleinere herausfinden

    Die zahlen sind Versions nummern. Das problem ist wenn in UNIX bzw. KSH Strings verglichen werden.


    2.3.4.5
    3.2.1.2

    das passt ja .. kleinere zuerst
    aber

    2.33.2.1
    3.2.1.1

    aber hier ... leider wird beim operaor '=' auch die länge überprüft


    Also nach endlosen Verwirrungen bitte um hilfe:

    2 Arrays

    a[0]=2.3.2.1
    a[1]=2.1.1.1
    a[2]=3.1.22.1
    .....
    b[0]=2.32.1.2
    b[1]=32.1.3.4
    b[2]=3.4.1.1

    Wie überprüfe ich das also jeweils.... stelle 0 mit stell0 ... stelle1 mit stelle 1


    ich wollte es so machen:

    while [[ $i -le 5 ]]
    do
    echo "${array1[zahl]}" | awk -F. '{print $i}' >> aja.txt
    done
    das der awk halt immer stellenweise herauslist also erste zahl bis zum punkt etc..
    und dann vergleicht
    bitte um eure meinung
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 07.07.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Nur kurzen Denkanstoß als Schnellschuß:
    Wie du dein Array durchläufst weisst du ja selbst, deshalb nur ein einzelnes paarweises Vergleichen.
    Code:
    A=(1.21.30.40.50)
    B=(1.2.3.4.5)
    #$A[0] sei also größer als $B[0] ->wir sortieren numerisch nach den Feldern 1-5
    # -n -k 1,5
    #Trennzeichen sei der Punkt -t"."
    # -c gibt nix aus, sondern prüft nur
    # die Fehlerausgabe leiten wir nach /dev/null
    echo -e "${A[0]}\n${B[0]}"|sort -n -t"." -c -k1,5 2>/dev/null && echo sortiert||echo unsortiert
    unsortiert
    
    Geht also ohne AWK
    Eine Schleife über beide Array-Element drum und Fertig. ;)
    HTH
    Gruß Wolfgang
     
  4. #3 buuuurn, 10.07.2006
    buuuurn

    buuuurn Jungspund

    Dabei seit:
    07.07.2006
    Beiträge:
    14
    Zustimmungen:
    0
    Suuuuper!

    Danke schön .

    Eine letzte Frage noch.

    Wie seh ich jetzt ob er weiß welches größer bzw. kleiner ist???
     
  5. #4 Wolfgang, 10.07.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Schau dir mal den Rückgabewert von sort an.

    Gruß Wolfgang
     
  6. #5 buuuurn, 10.07.2006
    buuuurn

    buuuurn Jungspund

    Dabei seit:
    07.07.2006
    Beiträge:
    14
    Zustimmungen:
    0
    Er schreibt mir eh sortiert raus. Das passt ehl

    Nur ich weiß jetzt halt ned wie ich dem programm sagen kann a bzw b ist größer.

    p.s : Falls es verwunderungen gibt hab erst seit letzter woche mit shell angefangen .. :)
     
  7. #6 Nemesis, 10.07.2006
    Nemesis

    Nemesis N3RD

    Dabei seit:
    28.01.2005
    Beiträge:
    2.165
    Zustimmungen:
    0
    <bemerkung nebenbei>Bitte gib in Zununft deinen Threads auch sinnvolle Namen, Hilfe will hier im Forum wohl jeder.</bemerkung nebenbei>
     
  8. #7 Wolfgang, 10.07.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Betrachte das mal genauer.
    Das echo sortiert in meinem Beispiel kommt nur, wenn der vorhergehende Befehl true zurückgibt.-> siehe auch && innerhalb der Befehlsverkettung.
    Du kannst dafür also auch eine if then else einbauen.
    Andererseits kannst du statt
    echo sortiert auch
    echo "erster Wert ist groeszer gleich zweiter Wert" sagen.
    um genau festzustellen ob Wert1 größer ist oder gleich, könntest du also schon vorher auf Gleichheit testen.
    Code:
    [b]if [ "${A[0]}" = "${B[0]}" ]; then
     echo gleichgroß;
    else
    echo -e "${A[0]}\n${B[0]}"|sort -n -t"." -c -k1,5 2>/dev/null && echo "A[0] ist groeszer" ||echo "B[0] ist groeszer"
    fi
    [/b]
    
    HTH
    Gruß Wolfgang
    PS Mit dem Titel hat Nemesis natürlich Recht.
     
  9. #8 buuuurn, 10.07.2006
    Zuletzt bearbeitet: 10.07.2006
    buuuurn

    buuuurn Jungspund

    Dabei seit:
    07.07.2006
    Beiträge:
    14
    Zustimmungen:
    0
    Ja ok werd ich machen.

    Jetzt gibts nur ein problem. Er macht nicht das was du sagst
    er sagt mir immer das a0 großer ist

    #!/bin/ksh

    set -A array
    set -A array1

    array[0]="6.0.3.40.50"
    array1[0]="7.1.3.4.5"
    echo -e "${array[0]}\n${array1[0]}" | sort -n -t"." -c -k1,5 2>i.txt && echo "a0 ist groesser" || echo "B0 ist groesser"

    und wenn die nummer dann nicht 5 stellen groß ist, muss ich einfach statt fünf zm $l wobei l die länge der ziffern ist, wobei hier wieder die frage ist wie ich das herausbekomme
     
  10. #9 Wolfgang, 10.07.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Dass du mit der ksh arbeitest, sagtest du nicht.
    Mein Beispiel bezieht sich auf die bash.
    Dort wird ein Array mit A=(wert wert) zugewiesen.
    Sorry, eine KSH habe ich hier nicht.
    Schau dir mal dein sort an, das könnte/wird sich wahrscheinlich auch von meinem unterscheiden.

    Gruß Wolfgang
     
  11. #10 Goodspeed, 10.07.2006
    Goodspeed

    Goodspeed Foren Gott
    Moderator

    Dabei seit:
    21.04.2004
    Beiträge:
    4.165
    Zustimmungen:
    1
    Ort:
    Dresden
    apt-get install ksh ? *feix*
     
  12. #11 buuuurn, 10.07.2006
    Zuletzt bearbeitet: 10.07.2006
    buuuurn

    buuuurn Jungspund

    Dabei seit:
    07.07.2006
    Beiträge:
    14
    Zustimmungen:
    0
    was macht das echo -e?
    bzw die 2 beim sort

    und dieses \n im echo
     
  13. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Hab das Topic mal geändert.

    Gruss, Xanti

    p.s.: @buuuurn man echo
     
  14. #13 supersucker, 10.07.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Lass dir halt nicht alles vorkauen.

    Diese Fragen hättest du nach einem kurzen Blick in die Manpage selber beantworten können.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 buuuurn, 10.07.2006
    buuuurn

    buuuurn Jungspund

    Dabei seit:
    07.07.2006
    Beiträge:
    14
    Zustimmungen:
    0
    ui ein ganz schlauer... dann weißt du ja wo ich die letzten stunden verbracht habe nur werde ich bei unseren man pages auf perl umgelinkt und gott weiß wieso... sonst hätte ich hier auch nicht gepostet

    was echo betrifft stehen alle drinnen bis auf -e
     
  17. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
Thema:

ksh: Sortieren von Arrays

Die Seite wird geladen...

ksh: Sortieren von Arrays - Ähnliche Themen

  1. Ausgabe gruppieren und sortieren

    Ausgabe gruppieren und sortieren: Hallo zusammen, ich benötige mal Hilfe bei einer nicht ganz alltäglichen Aufgabe: Ich habe eine Ausgabe die so aussieht:...
  2. Linux Mint & Evolution => Mails nach Datum sortieren

    Linux Mint & Evolution => Mails nach Datum sortieren: Hallo Leutz, ertmal hallo, bin hier neu :D. Bin mit nicht ganz sicher, ob das Theme hier rein passt, wab aber nichts besseres gefunden....
  3. temporäre Datei sortieren

    temporäre Datei sortieren: Hallo, ich habe eine Datei die in der vierten Spalte aufsteigend zu sortieren ist: M110 # (177,2,0) # 1.00 # 11.01.2012 14:48 #...
  4. latex cite: sortieren der Referenzen

    latex cite: sortieren der Referenzen: Hallo, wenn ich bei LaTeX im bibliographystyle{plain} mittels \cite{key1,key2,key3} mehrere Quellen angebe, erscheinen die Ziffern im Text in...
  5. Bilder Sortieren

    Bilder Sortieren: Hallo... Ich befasse mich seit einiger Zeit mit Centos und so weit hab ich das schon im Griff - was ich jetzt beginnen möchte - sind...