Zeile sortieren

C

combat

Grünschnabel
Hallo zusammen,

ich dachte das Sortieren mit sort wäre einfacher, doch "sort" kann nur in Spalten sortien und nicht in Zeilen.
Was ich gerne hätte, wäre dass Sortieren in allen einzelnen Zeilen, am besten in einer C-Shell.



Beispiel:

c;b;a
i;h;g
f;e;d

soll in jeder einzelnen Zeile für sich sortiert werden
Ergebnis:

a;b;c
g;h;i
d;e;f

Habt ihr eine Idee oder Vorschlag dazu?

Gruß combat
 
Vielleicht musst Du Dich in awk oder perl einarbeiten, um in diesen Programmen die Zeilen in ein array aufzuteilen und dieses dann zu sortieren. Ich wuerde wahrscheinlich mit awk beginnen.
 
Das habe ich bisher in awk probiert:

Code:
BEGIN {FS=";"
      }
      {
           n = split ($0, arr, ";")
           for (i=1; i<=n; i++)
           {
	     print arr[i] | "sort"
           }
      }
END   {
         }

doch leider wird alles nur in einer Spalte ausgegeben.
 
Mit GNU awk (wegen 'asort') könnte das etwa so aussehen:
Code:
awk '{
        split($0, arr1, ";");
        n = asort(arr1, arr2);
        for ( i = 1; i <= n; i++ ) {
                printf "%s%c", arr2[i], (i < n ? ";" : "\n");
        }
}'
('printf' statt 'print' mit dem Check, ob bereits das letzte Element angezeigt werden soll, um die Zeilen nach dem 'split'/'asort' wieder zusammenzubasteln)

In Perl geht das auch, ohne die Zwischenergebnisse explizit hinzuschreiben:
Code:
perl -ne 'chomp; print join(";", sort split(/;/)), "\n";'

:)
 
Hi floyd62,

danke für deine Beispiele, doch leider läuft bei mir gawk, asort und perl nicht.
Das System bei mir ist Sun OS 5.6.

Trotzdem danke
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Python Script Hilfe

CentOS 5.8 –SQL Abfrage– HTML wird generiert und daraus müssen mehrere Mails versendet werden

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

Zeilen kopieren mit SED

Zurück
Oben