Daten zeilenweise einlesen

Diskutiere Daten zeilenweise einlesen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo, möchte mit der bash ein skript bauen mit dem ich zeilenweise Datensätze einlesen und später verarbeiten kann. datensatz.txt...

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. Mozilla-Einkaufsführer für mehr Datenschutz

    Mozilla-Einkaufsführer für mehr Datenschutz: Die Weihnachtssaison hat bereits begonnen und viele erwägen, ein mit dem Internet verbundenes Gerät oder Spielzeug zu schenken. Mozilla hat wie im...
  2. IoT-Datenbank CrateDB 4.0 freigegeben

    IoT-Datenbank CrateDB 4.0 freigegeben: Crate.io, Entwickler und Anbieter der für den Einsatz in IoT-Umgebungen optimierten CrateDB, hat die Version 4.0 der freien Datenbank vorgestellt....
  3. Kurztipp: sysbench als Datenbank-Benchmark

    Kurztipp: sysbench als Datenbank-Benchmark: Das Programm sysbench wurde als Benchmark für Datenbanken, aber auch andere Anwendungen konzipiert. Anders als in manchen Blogs angegeben, lässt...
  4. Daten für eine Homepage optimieren und verarbeiten?!

    Daten für eine Homepage optimieren und verarbeiten?!: Hi Ihr wisst ja sicher es gibt viele offene Daten die von der Regierung kostenlos zur Verfügung gestellt werden darunter auch "echt zeit daten"....
  5. Daten Convertieren und auf einen Server schieben?

    Daten Convertieren und auf einen Server schieben?: Hi Ich habe ein rriieesseennn Problem. Ja ja mit Windows gehts ned ich weiss.... Es geht darum auf meinen Web CMS möchte ich "echtzeitdaten"...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden