Sortieren Frage

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
SledgeHammer
Beiträge: 175
Registriert: 10.08.2003 17:32:04

Sortieren Frage

Beitrag von SledgeHammer » 13.09.2004 10:14:21

ch will eine Liste sortieren, die folgendermaßen aussieht
192.168.0.1 11:F1:B7:CA:FF:18
192.168.0.2 44:208:7D:CB:05
192.168.0.3 22:2D:F8:74:GH:12
192.168.0.4 11:F1:B7:CA:FF:18
192.168.0.5 44:208:7D:CB:05
....
...
ich möchte das ganze geornet haben nach der zweiten spalte so solte es dann aussehn
192.168.0.1 11:F1:B7:CA:FF:18
192.168.0.4 11:F1:B7:CA:FF:18
192.168.0.2 44:208:7D:CB:05
192.168.0.5 44:208:7D:CB:05
192.168.0.3 22:2D:F8:74:GH:12
....
...

Wie mache ich das am besten unter Linux ?
gruß Dennis

Tomek
Beiträge: 254
Registriert: 07.08.2004 10:48:37
Wohnort: Paderborn

Beitrag von Tomek » 13.09.2004 10:18:33

Auch hier:

Code: Alles auswählen

man sort
Gruß,
Tomek

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 13.09.2004 11:21:52

Oder viel besser als ein RTFM Link hier:

Code: Alles auswählen

sort /tmp/sort.in -k 2,2
wenn sort.in so aussieht:

192.168.0.1 11:F1:B7:CA:FF:18
192.168.0.2 44:208:7D:CB:05
192.168.0.3 22:2D:F8:74:GH:12
192.168.0.4 11:F1:B7:CA:FF:18
192.168.0.5 44:208:7D:CB:05

bekommst du als resultat

Code: Alles auswählen

me@my:/> sort /tmp/sort.in -k 2,2
192.168.0.1 11:F1:B7:CA:FF:18
192.168.0.4 11:F1:B7:CA:FF:18
192.168.0.3 22:2D:F8:74:GH:12
192.168.0.2 44:208:7D:CB:05
192.168.0.5 44:208:7D:CB:05

Benutzeravatar
SledgeHammer
Beiträge: 175
Registriert: 10.08.2003 17:32:04

Beitrag von SledgeHammer » 13.09.2004 13:01:03

Super danke hat mir schon mal bissl weitergeholfen :)

ich möchte die Zeilen von Datei B in die entsprechenden Zeilen Unter Datei A einsortieren.
nach dem Kreterium MAC adresse...

Beispiel:

Datei A:
192.168.0.1 11:F1:B7:CA:FF:18
192.168.0.2 44:208:7D:CB:05
192.168.0.3 22:2D:F8:74:GH:12
192.168.0.4 11:F1:B7:CA:FF:18
192.168.0.5 44:208:7D:CB:05

Datei B:
192.168.0.100 11:F1:B7:CA:FF:18
192.168.0.159 44:208:7D:CB:05
192.168.0.232 22:2D:F8:74:GH:12
192.168.0.174 11:F1:B7:CA:FF:18
192.168.0.133 44:208:7D:CB:05

Ergebnis Datei A + Datei B:
192.168.0.1 11:F1:B7:CA:FF:18
192.168.0.100 11:F1:B7:CA:FF:18
192.168.0.2 44:208:7D:CB:05
192.168.0.159 44:208:7D:CB:05
192.168.0.3 22:2D:F8:74:GH:12
192.168.0.232 22:2D:F8:74:GH:12
192.168.0.4 11:F1:B7:CA:FF:18
192.168.0.174 11:F1:B7:CA:FF:18
192.168.0.5 44:208:7D:CB:05
192.168.0.133 44:208:7D:CB:05

Mit welchem Program mach ich das ?

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 13.09.2004 13:10:58

Code: Alles auswählen

sort -k 2,2 -o A A B 
könnte doch gehen? Nicht? Oder beide reincaten? oder...

cu

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 13.09.2004 13:28:56

geht auch =)

Benutzeravatar
SledgeHammer
Beiträge: 175
Registriert: 10.08.2003 17:32:04

Beitrag von SledgeHammer » 13.09.2004 13:31:43

vieleicht ist das auch zu schwer erklärt was ich will

Datei A:
+192.168.0.100 11:F1:B7:CA:FF:18
+192.168.0.2 44:208:7D:CB:05

Datei B:
-192.168.0.1 11:F1:B7:CA:FF:18
-192.168.0.159 44:28:7D:CB:05
-192.168.0.152 44:28:7D:CB:05
-192.168.0.66 11:F1:B7:CA:FF:18


Ergebnis in einer neuen datei
+192.168.0.100 11:F1:B7:CA:FF:18
-192.168.0.1 11:F1:B7:CA:FF:18
-192.168.0.66 11:F1:B7:CA:FF:18

+192.168.0.2 44:28:7D:CB:05
-192.168.0.159 44:28:7D:CB:05
-192.168.0.152 44:28:7D:CB:05


Die + Zeichen sowie die - sollen das nur verdeutlichen was ich meine aber sind in keiner Datei vorhanden


Das ganz in Worte gefaßt ich möchte die Datei A als Referenz nehmmen und mit den Daten von Datei B anreichern.
Die Daten also aus Datei B sind den der Datei A untergeordnet.

Ich hab mir das so vorgestellt
ich suche nach einer MAC adresse von datei B in datei A wenn ich sie gefunden habe in datei a dann soll die ganze zeile von datei B unter der gefunden MAC in Datei A schreiben.

gruß Dennis

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 13.09.2004 13:42:44

Das was du da schreibst geht ja genau mit dem Befehl:

Code: Alles auswählen

sort -k 2,2 -o FileC FileA FileB
cat FileC
+192.168.0.100 11:F1:B7:CA:FF:18
-192.168.0.1 11:F1:B7:CA:FF:18
-192.168.0.66 11:F1:B7:CA:FF:18
+192.168.0.2 44:208:7D:CB:05
-192.168.0.152 44:28:7D:CB:05
-192.168.0.159 44:28:7D:CB:05
So what ?

Benutzeravatar
SledgeHammer
Beiträge: 175
Registriert: 10.08.2003 17:32:04

Beitrag von SledgeHammer » 13.09.2004 13:59:49

ja stimmt (haue gerade kopf aufm tisch :) ) aber leider ist die sortierung immer noch nicht richtig
die mit +müssen auch sortiert werden hab selber im eifer des gefechtes nicht gemerkt

so sollte das aussehen
+192.168.0.2 44:208:7D:CB:05
-192.168.0.152 44:28:7D:CB:05
-192.168.0.159 44:28:7D:CB:05
+192.168.0.100 11:F1:B7:CA:FF:18
-192.168.0.1 11:F1:B7:CA:FF:18
-192.168.0.66 11:F1:B7:CA:FF:18

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 13.09.2004 14:08:48

SledgeHammer hat geschrieben:ja stimmt (haue gerade kopf aufm tisch :) ) aber leider ist die sortierung immer noch nicht richtig
die mit +müssen auch sortiert werden hab selber im eifer des gefechtes nicht gemerkt

so sollte das aussehen
+192.168.0.2 44:208:7D:CB:05
-192.168.0.152 44:28:7D:CB:05
-192.168.0.159 44:28:7D:CB:05
+192.168.0.100 11:F1:B7:CA:FF:18
-192.168.0.1 11:F1:B7:CA:FF:18
-192.168.0.66 11:F1:B7:CA:FF:18
Das macht jetzt für mich aber gar keinen Sinn mehr :roll:

Wieso 44..11.. (MAC) ?
Und Wieso solch ein Kuddelmuddel ?

Sorry, aber wenn du nicht weisst was du wie sortieren möchtest kann man dir auch nicht helfen ;)

//edit
glaub ich hab's geschnallt... bin dran was am suchen...

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 13.09.2004 14:15:57

Hier noch ein Versuch :)

Code: Alles auswählen

sort -k 2,2 -k 1,1 -o FileC FileA FileB

cat FileC
-192.168.0.1 11:F1:B7:CA:FF:18
+192.168.0.100 11:F1:B7:CA:FF:18
-192.168.0.66 11:F1:B7:CA:FF:18
+192.168.0.2 44:208:7D:CB:05
-192.168.0.152 44:28:7D:CB:05
-192.168.0.159 44:28:7D:CB:05
so ?
Erst nach MAC sortiert, anschliessend nach IP...

Benutzeravatar
SledgeHammer
Beiträge: 175
Registriert: 10.08.2003 17:32:04

Beitrag von SledgeHammer » 13.09.2004 14:19:15

vielen Dank, ich weiß das iss ziemlich komisch - danke für das dabeibleiben!
warum ich das so geordnet haben will liegt daran das filea reale ip adressen beinhaltet und fileb virtuelle deswegen auch die gleichen MAC adressen.

Man kann so sehen welche virtuellen ip adressen welchem Server gehören und das automatische weiterverarbeiten der Daten ist auch viel einfacher sobald das sortiert ist.


leider gibts immer noch schwirigkeiten

sort -k 2,2 -k 1,1 -o filec filea fileb

cat filea
+192.168.0.2 44:208:7D:CB:05
+192.168.0.100 11:F1:B7:CA:FF:18
+192.168.0.13 11:D2:33:CA:FF:EE

cat fileb
-192.168.0.1 11:F1:B7:CA:FF:18
-192.168.0.159 44:28:7D:CB:05
-192.168.0.100 11:F1:B7:CA:FF:18
-192.168.0.11 11:F1:B7:CA:FF:18
-192.168.0.20 11:D2:33:CA:FF:EE

cat filec

+192.168.0.13 11:D2:33:CA:FF:EE
-192.168.0.20 11:D2:33:CA:FF:EE
+192.168.0.100 11:F1:B7:CA:FF:18
-192.168.0.1 11:F1:B7:CA:FF:18
-192.168.0.100 11:F1:B7:CA:FF:18
-192.168.0.11 11:F1:B7:CA:FF:18
+192.168.0.2 44:208:7D:CB:05
-192.168.0.159 44:28:7D:CB:05

filec müsste so aussehen
+192.168.0.2 44:208:7D:CB:05
-192.168.0.159 44:28:7D:CB:05

+192.168.0.13 11:D2:33:CA:FF:EE
-192.168.0.20 11:D2:33:CA:FF:EE
+192.168.0.100 11:F1:B7:CA:FF:18
-192.168.0.1 11:F1:B7:CA:FF:18
-192.168.0.11 11:F1:B7:CA:FF:18
-192.168.0.100 11:F1:B7:CA:FF:18

/EDIT
Ist wohl kein Bug liegt daran das man die Sache ganz auschreiben muss

sprich
falsch 192.168.0.1
richtig 192.168.000.001
dann muss ich wohl vorher per awk nen paar nullen hinzufügen???

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 13.09.2004 16:03:06

Wonach ist filec dann eigentlich sortiert?
Ich kann da keine logische sortierung erkennen.
Bei meinen Tests mit Python bekomme ich z.b.

Code: Alles auswählen

192.168.0.2 44:208:7D:CB:5
192.168.0.159 44:28:7D:CB:5
192.168.0.100 11:F1:B7:CA:FF:18
192.168.0.100 11:F1:B7:CA:FF:18
192.168.0.11 11:F1:B7:CA:FF:18
192.168.0.1 11:F1:B7:CA:FF:18
192.168.0.20 11:D2:33:CA:FF:EE
192.168.0.13 11:D2:33:CA:FF:EE
heraus, da ist erst nach mac und dann nach ip absteigend sortiert.

Gruß

Dookie

Antworten