Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Bash: Daten verarbeiten, sortieren und zuordnen.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    23.05.2007
    Beiträge
    21

    Bash: Daten verarbeiten, sortieren und zuordnen.

    Hallo,
    ich brauche einen Tipp, wie ich folgenden Daten verarbeiten kann:

    Artikelname1 Zeitung
    Artikelname1 Buch
    Artikelname1 Grußkarten
    Quantity1 1.00
    Quantity1 2.00
    Quantity1 1.00
    Price1 32.96
    Price1 41.20
    Price1 74.16

    Ich möchte jedes Werte paar als einen Datensatz verarbeiten:
    Variablen: artikelname;quantity;price
    Datensatz 1: Zeitung; 1.00; 32.96;
    Datensatz 2: Buch; 2.00; 41.20;
    Datensatz 3 Grußkarten; 1.00; 74.16;
    In dem Text können auch mehr als 3 oder auch nur 2 Wertepaare enthalten sein.
    Die Werte will ich in eine DB eintragen, wie das geht, weis ich.


    Mein Ansatz ist zu Zählen, wie viel mal z.B. Artikelname1 vorkommt.

    Aber wie geht es denn weiter?
    Ich brauche dringend einen Ansatz.

    Danke für Eure Hilfe!

    Gruß
    Tino Brandt

  2. #2
    Registrierter Benutzer Avatar von Aqualung
    Registriert seit
    28.01.2008
    Beiträge
    14
    Die Zuordnung ist ausschließlich über die Reihenfolge festgelegt?

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.05.2007
    Beiträge
    21
    Ja,

    die erste Position bildet ein Wertepaar (Zeitung;1.00;32.96), jeweils die zweite usw.



    Danke!

    Gruß
    Tino

  4. #4
    Registrierter Benutzer Avatar von Aqualung
    Registriert seit
    28.01.2008
    Beiträge
    14
    Deine Eingabe sei file3. Eine "hölzerne" Lsg. wäre:

    Code:
    mytmp=$(mktemp -d)
    grep Artikelname1 file3 | cut -d" " -f2 > $mytmp/1.tmp
    grep Quantity1    file3 | cut -d" " -f2 > $mytmp/2.tmp
    grep Price1       file3 | cut -d" " -f2 > $mytmp/3.tmp
    
    paste $mytmp/1.tmp $mytmp/2.tmp $mytmp/3.tmp
    
    Zeitung 1.00    32.96
    Buch    2.00    41.20
    Grußkarten      1.00    74.16
    
    rm -rf $mytmp

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.05.2007
    Beiträge
    21

    Smile

    Super, danke für den Ansatz.
    Ich will ja die Werte in eine DB erfassen, mal sehen wie ich die Zuordnung hinbekommen.

    Nochmals Danke!

    Gruß
    Tino

  6. #6
    Registrierter Benutzer
    Registriert seit
    23.05.2007
    Beiträge
    21
    Hier meine daraus entwickelte Lösung:

    ##
    mytmp=$(mktemp -d)
    grep Artikelname1 file3 | cut -d" " -f2 > $mytmp/1.tmp
    grep Quantity1 file3 | cut -d" " -f2 > $mytmp/2.tmp
    grep Price1 file3 | cut -d" " -f2 > $mytmp/3.tmp

    anzahl=$(cat file3 | grep "Artikelname1" | wc -l)

    for ((m=1; $m<=$anzahl; m++));do
    artikelname=$(head -n$m $mytmp/1.tmp | tail -n1)
    echo $artikelname
    quantity=$(head -n$m $mytmp/2.tmp | tail -n1)
    echo $quantity
    price=$(head -n$m $mytmp/3.tmp | tail -n1)
    echo $price
    done
    rm -rf $mytmp
    ##

    Gruß
    Tino

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •