• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Zwei Dateien verknüpfen, spaltenweise

Hallo Leute!
Ich befasse mich gerade mit Linux und bin noch ein Frischling. Dennoch würde ich gern wissen,wie ich zum Beispiel folgende Aufgaben lösen könnte:

Im Verzeichnis /glb/studi finden Sie die Dateien kunden, aktikel und auftraege mit Datensätzen, die folgendermaßen aufgebaut sind:
- kunden: Kundenname Kundennummer Wohnort
- artikel: Artikelname Artikelnummer Preis
- auftraege: Kundennummer Auftragsnummer Artikelnummer Stückzahl Liefertermin

2)Stellen Sie eine Datei kundenauftraege für alle Kunden auf, die einen Auftrag erteilt haben. Sie enthalte: Kundennr., Name, Ort, Artikelnr., Preis, Stückzahl und Auftragsnr.

3)Sortieren Sie die Datei kundenauftraege
a) für den Versandt nach Orten,
b) für die Abrechnung nach Kunden
c) für die Lagerhaltung nach Artikelnummern.

4)Ordnen Sie die Datei Kundenaufträge so, daß bei (a) die Ortsnamen, bei (b) die Kundennamen und bei (c) die Artikelnummern zuerst ausgegeben werden.


Sicherlich muss man bei 2) die verschiedenen Dateien mit einandner verknüpfen, aber nur bestimmte Spalten und das ganze muss dann noch in eine extra Datei abgespeichert werden. Bei SQL gibt es ja den SELECT und INNER JOIN Befehl. Gibt es sowas Ähnliches auch für LINUX?
Bei 3) denke ich mal, sind dies einfach SORT Abfragen die man dann mit den entsprechenden -k Befehlen hinbekommt.
Bei 4) bin ich mir wieder sehr unsicher, da es ja schon was größeres zu sein scheint.

Vielleicht hat ja einer Zeit und Muße mir da weiter zuhelfen =)

Ich würde mich sehr freuen!
Grüßchens
 

abgdf

Guru
Welche Sprache sollst Du denn benutzen (Perl, Python, Java)?

Klar gibt es auch SQL-Server für Linux (PostgreSQL, MySQL, SQLite). Da müßtest Du die Dateien aber erstmal einlesen. So scheinen die Dateien ja erstmal im CVS-Format zu sein ...
 
OP
S

SilenceRain

Newbie
Naja also wir benutzen gerade Shell-Kommandos. Denke mal, das hat nicht viel mit java oder Ähnlichem zu tun.
 

abgdf

Guru
SilenceRain schrieb:
Naja also wir benutzen gerade Shell-Kommandos. Denke mal, das hat nicht viel mit java oder Ähnlichem zu tun.
Ok, mit Shell-Kommandos (bash) ist sowas aber besonders schlecht zu machen. Möglich zwar, aber schwierig. Die Shell ist für die Arbeit mit Dateien gemacht, weniger für die Arbeit mit Daten in Dateien. In der Shell läuft sowas (neben "sort" hier) meist auf "awk" hinaus, das aber eigentlich etwas veraltet ist. robi wäre da "unser Experte" dafür. :)

Aber mal im Ernst: Wer schreibt denn eine Datenbankanwendung (mit Kundenadressdaten usw.) in bash???
Das sind doch total lebensfremde (Haus-)Aufgaben.
 
OP
S

SilenceRain

Newbie
Naja, das sind quasi die Aufgaben bzw. die Eintrittskarten für die Prüfung. ^^ Also irgendwie muss das gehen. Vielleicht kann man sich ja die einzelnen Dateien sortieren bzw nur das anzeigen lassen, was man braucht und dies dann in eine eigene Datei speichern. Man müsste das ja dann für alle drei Dateien machen und alle 'Abfragen' dann in eine Datei anhängen.
 

RME

Advanced Hacker
Hallo,

Was Du machen willst (oder machen musst) ist durchaus auch mit bash möglich. Nur kann Dir keiner helfen wenn Du nicht informierst wie denn die Datei tatsächlich aussieht.

-- wie sind die Daten strukturiert. Gibt es 'tokens' oder Schlüsselwörter wobei die Daten identifiziert werden können. Z.B.

Code:
Name: xyz
Adresse: uvw
etc.
-- sind die Daten der jeweiligen Kunden von einander getrennt? wie? eine Leerzeile?

-- ist die Datei immer exact gleich strukturiert?

Code:
Zuerst Kundenname
Zweitens Kundendaten
Drittens Artikelbezeichnung
oder kann das in beliebiger Reihenfolge aufgelistet sein?

usw. usw.

Gruss,
Roland
 

abgdf

Guru
SilenceRain schrieb:
Vielleicht kann man sich ja die einzelnen Dateien sortieren bzw nur das anzeigen lassen, was man braucht und dies dann in eine eigene Datei speichern.
Auf "sort" hatte ich schon hingewiesen, "grep" ist gut zum Filtern.
RME schrieb:
Was Du machen willst (oder machen musst) ist durchaus auch mit bash möglich.
Hab' ich ja gar nicht bestritten. Andererseits ginge es auch in Brainf***. Aber will man das?

SCNR
 

spoensche

Moderator
Teammitglied
Du kannst mi dem Befehl
Code:
join
den Inhalt zweier Dateien verknüpfen. Sieh dir mal
Code:
man join
an.
 
OP
S

SilenceRain

Newbie
Also die Dateien sind gleich vom Inhalt (je Spalte) aufgebaut. Die habe ich mir gerade angeschaut. Bei der Datei Kunden gibt es den Kundenname, der aus Vor- und Nachname (getrennt mir Leerzeichen) besteht.

Den join Befehl schaue ich mir gleich mal an. =)

Danke für die zahlreiche Hilfe! Ich bin gespannt wie weit ich komme ^^
 
Oben