Daten zeilenweise einlesen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von blueunderground, 22.12.2005.

  1. #1 blueunderground, 22.12.2005
    blueunderground

    blueunderground Mitglied

    Dabei seit:
    13.10.2005
    Beiträge:
    28
    Zustimmungen:
    0
    Hallo,

    möchte mit der bash ein skript bauen mit dem ich zeilenweise Datensätze einlesen und später verarbeiten kann.

    datensatz.txt
    <Artikelnummer>123</Artiklenummer>
    <Artikelname>Holzkiste</Artiklename>
    <Preis>12,50</Preis>
    <Waehrung>EUR</Waehrung>
    <Artikelnummer>155</Artiklenummer>
    <Artikelname>Bauklotz</Artiklename>
    <Preis>12,50</Preis>
    <Waehrung>EUR</Waehrung>
    <Artikelnummer>777</Artiklenummer>
    <Artikelname>Holzkiste</Artiklename>
    <Preis>9,20</Preis>
    <Waehrung>EUR</Waehrung>
    <Artikelnummer>456</Artiklenummer>
    <Artikelname>Schublade</Artiklename>
    <Preis>10,00</Preis>
    <Waehrung>USD</Waehrung>


    Nun möchte ich jeden Datensatz seperat einlesen, die Zuordnun Anfang/Ende des Datendatzes wäre immer die Artiklnummer, wie bekomme ich das hin (Array) ???

    Würde später gerne eine Ausgabe haben in dem ich die Artikelnummer angeben und den Datensatz ausgeben lassen.


    Danke für die Hilfe.

    Blue
     
  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 ninguno, 22.12.2005
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    naja jeweils 4 zeilen machen einen datensatz aus, das sollte ja nicht so schwer sein. hast du irgendwelche konkreten fragen?
    zum einstieg kannst mal den folgende code verwenden, er liest die datei ein und ermittelt den jeweiligen wert
    Code:
    while read zeile; do
      value=${zeile%<*};value=${value#*>}
      echo $value
    done<datensatz.txt
    den ermittelten wert stellst du dann in den passenden array; ist es eine artikelnummer dann in den artikelnummer array usw.
     
  4. #3 blueunderground, 22.12.2005
    blueunderground

    blueunderground Mitglied

    Dabei seit:
    13.10.2005
    Beiträge:
    28
    Zustimmungen:
    0
    Hi ninguno,

    erstmal Danke für deine Antwort.
    Erstmal vorweg, habe noch nicht mit Arrays gearbeitet.

    Ich würde das ganze so haben.
    in meinem Aufruf würde ich ein Parameter ($1) übergeben , dies ist dann die Artnr. z.b 777

    ./einlesen.sh 777

    Somit würde ich dann gerne mit den Daten aus dem bestimmten Datensatz arbeiten sprich:

    777
    Holzkiste
    9,20
    EUR

    davon würde ich gerne den Preis und Waehrung haben wollen, vielleicht so:


    ./einlesen.sh 777 preis waehrung

    Ausgabe:
    777 9,20 EUR

    Ich denke Du hast das vom Grundgedanke verstanden :-)
    Danke
     
  5. #4 ninguno, 22.12.2005
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    okay dann hast du dir ja jetzt sicher schon angeschaut wie das geht. zuweisung an array ist ganz einfach
    Code:
    artikelnummer[$satzno]=$value;
    echo ${artikelnummer[$i]}
    hast du noch konkrete fragen?
     
  6. #5 Wolfgang, 22.12.2005
    Zuletzt bearbeitet: 22.12.2005
    Wolfgang

    Wolfgang Foren Gott

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

    Hier wirst du nur mit sinnlosen Klimmzügen an einem Array vorbeikommen.
    Einmal fängt ja jeder an, warum nicht gleich an diesem exemplarischen Beispiel?

    Aber um deine Daten in eine bessere Blockform zu bringen, kannst du diese ja erstmal in einer zeile sammeln.

    So auf die Schnelle mit sed:
    Code:
    sed -ne '/^<Artikelnummer/!H;/^<Artikelnummer/x;s/\n/ /gp' datensatz.txt
    [i]<Artikelnummer>123</Artiklenummer>      <Artikelname>Holzkiste</Artiklename>    <Preis>12,50</Preis>    <Waehrung>EUR</Waehrung>
    <Artikelnummer>155</Artiklenummer>      <Artikelname>Bauklotz</Artiklename>     <Preis>12,50</Preis>    <Waehrung>EUR</Waehrung>
    <Artikelnummer>777</Artiklenummer>      <Artikelname>Holzkiste</Artiklename>    <Preis>9,20</Preis>     <Waehrung>EUR</Waehrung>
    
    
    [/i]
    
    Bringt erstmal die zusammengehörigen Blöcke in eine Zeile wobei die xml-Tags durch Tab getrennt werden.
    Die Ausgabe lasst sich dann einfach in eine while read Schleife einlesen.
    Dann kannst du die Varablen auf den Parameternamen testen und mittels Variablenexpansion den Inhalt ausgeben.
    Wenn die Datensätze immer die gleiche Reihenfolge haben, kannst du die in der while read Schleife auch gleich direkt zuweisen und gegebenenfalls den <Tagbezeichner> mittels sed oder perl entsorgen.
    Ist allerdings etwas fehlerträchtig, wenn die Daten nicht konsistent sind.
    Thats all folks.

    Mit Array und oder gleich Hash mit perl, bist du natürlich variabler.
    HTH
    Gruß Wolfgang
     
Thema:

Daten zeilenweise einlesen

Die Seite wird geladen...

Daten zeilenweise einlesen - Ähnliche Themen

  1. Python Softwareentwickler (Hintergrundentwicklung und Datenanalyse)

    Python Softwareentwickler (Hintergrundentwicklung und Datenanalyse): Stelle : Software-Entwickler Anzahl : 3 Standort : Manila(Die Philippinen) Dezhong Investment LTD. Unser internationales...
  2. Neue Vision von KDE: Datenschutz, Freiheit, Privatsphäre

    Neue Vision von KDE: Datenschutz, Freiheit, Privatsphäre: Das KDE-Projekt hat sich eine neue Leitlinie gesetzt. Schon immer war es das Ziel des Projektes, mit seiner Arbeit die Welt ein Stückchen besser...
  3. Debian-Projektleiterwahl mit nur einem Kandidaten

    Debian-Projektleiterwahl mit nur einem Kandidaten: Bei der anstehenden jährlichen Debian-Projektleiterwahl tritt nur ein Kandidat an, der Franzose Mehdi Dogguy. Der amtierende Projektleiter Neil...
  4. Deutsche Bahn öffnet Fahrplandaten

    Deutsche Bahn öffnet Fahrplandaten: Über ein API stellt die Deutsche Bahn die aktuellen Fahrplandaten unter einer Creative-Commons-Lizenz allen Interessenten zur Nutzung bereit....
  5. Samba Datentransfer bricht ab

    Samba Datentransfer bricht ab: Hallo zusammen, ich suche seit 2 Tagen im Internet nach einer Lösung, aber ich finde einfach keine brauchbare. Folgendes Szenario: Ich vor einem...