awk Probleme bzw. datenbank herauslesen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von buuuurn, 12.07.2006.

  1. #1 buuuurn, 12.07.2006
    buuuurn

    buuuurn Jungspund

    Dabei seit:
    07.07.2006
    Beiträge:
    14
    Zustimmungen:
    0
    Folgende Aufgabenstellung:

    Ich würde gerne aus einer Datenbank etwas heraus lesen und zwar:

    ..
    db2 list tablespaces show detail | grep Type > hugo.txt

    LISTE=$( cat hugo.txt | awk -F= '{print $2}')
    for ITEM in $LISTE
    do
    arr[zahl]=${ITEM}
    print ${ITEM}
    let 'zahl=zahl+1'
    done


    und hugo sieht so aus:

    Type = System managed space
    Type = System managed space
    Type = System managed space
    Type = Database managed space
    Type = Database managed space
    Type = Database managed space

    nur die ausgabe die rauskommt ist:

    System
    managed
    space
    ...

    also er nimmt ab dem = jedes wort für ein eigenes Element d.H

    a[0]= System
    a[1]=managed
    ..
    ich würde gerne haben
    a[0]=System managed space

    das wäre das erste problem

    und als draufgabe:

    wenn jemand eine idee hätte wie ich aus der daten bank nur das bekomme bei dem database mananged steht wäre ich dankbar.

    meine idee ist es , alles in ein Array dnan zu lesen aus der datei und dann halt auszusortieren wo es vorkommt und wo nicht

    MFG
    buuuurn
     
  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 Schlaubi_fi.de, 12.07.2006
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    so gehts nicht? Also die Argumente in in Doppelhochkomme oder auch mal einfache Hochkomma probieren LIST='abc def' ....
    Code:
    LISTE="$( cat hugo.txt | awk -F= '{print $2}')"
    for ITEM in $LISTE
    do
         arr[zahl]=${ITEM}
         print ${ITEM}
         let 'zahl=zahl+1'
    done
    
     
  4. #3 Wolfgang, 12.07.2006
    Zuletzt bearbeitet: 12.07.2006
    Wolfgang

    Wolfgang Foren Gott

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

    Deine for ITEM -Schleife zerlegt die Eingabe in einzelne Variablen am FS getrennt.
    Entweder du manipulierts FS oder verwendest gleich read.
    Bei read wird alles bis zum Zeilenende in die definierten Variablen gepackt.
    Hast du nur eine, landet es komplett darin.
    Code:
    cat $LIST |while read ITEM;
    do 
    arr[zahl]="${ITEM}"
    print "${ITEM}"
    let 'zahl=zahl+1'
    done
    
    Oder eben FS=$'\n'

    Code:
    IFS=$'\n';for I in $(cat test|awk -F= '{print $2}'); do echo "$I"; done
    *read unter ksh kenne ich nicht wirklich, und ich habe auch keine Lust mir extra ksh zu installieren. ;)

    Also gegebenenfalls mal nachsehen ob dein read das auch so behandelt.
    Zu deiner zweiten Frage:
    Erstell dafür einen extra Thread im Forum SQL und Datenbanken , das hat wohl weniger mit der shell als mit SQL zu tun.
    Welchen DB-Server nutzt du denn?
    Gib das dort bitte mit an.

    Gruß Wolfgang
     
  5. #4 buuuurn, 13.07.2006
    Zuletzt bearbeitet: 13.07.2006
    buuuurn

    buuuurn Jungspund

    Dabei seit:
    07.07.2006
    Beiträge:
    14
    Zustimmungen:
    0
    das mit dem IFS funzt auch ned

    da speichert er mir

    System ma
    aged space

    das heißt er speichert ab dem n


    und so als frage am rande:

    wie hängt man zeichenketten zusammen?

    h="asdf"
    b="asfd"
    h=h+b

    das wird es ja wohl ned sein
     
  6. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Er scheint n als das Trennsymbol zu nehmen. Ich würde in Deinem Fall = wählen, also:

    Code:
    [~]$ a="Type = System managed space"
    [~]$ IFS='='
    [~]$ set $a
    [~]$ echo $2
     System managed space
    
    Braucht noch etwas Schönheitspflege. Vielleicht habe ich Dich auch falsch verstanden.

    Strings verbinden auf Shell-Ebene würde ich mit

    Code:
    var="$var1$var2"

    Gruss, Xanti
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 lcrGeorg, 13.07.2006
    Zuletzt von einem Moderator bearbeitet: 13.07.2006
    lcrGeorg

    lcrGeorg GESPERRT!

    Dabei seit:
    11.07.2006
    Beiträge:
    3
    Zustimmungen:
    0
    Er hat recht

    admin edit: Dies ist keine Werbeplattform!
     
  9. #7 Wolfgang, 13.07.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Was hast du denn IFS zugewiesen?
    Code:
    
    [b]IFS=\n[/b];
    for i in $(cat test|awk -F= '{print $2}'); do echo "$i"; done
     System ma
    aged space
     System ma
    aged space
     System ma
    aged space
     Database ma
    aged space
     Database ma
    aged space
     Database ma
    aged space
    ##ABER
    [b]IFS=$'\n';[/b]
    for i in $(cat test|awk -F= '{print $2}'); do echo "$i"; done
     System managed space
     System managed space
     System managed space
     Database managed space
     Database managed space
     Database managed space
    
    Das sollte auch mit ksh gehen.
    Da ist der Unterschied.
    ;)
    Schau dir dringend mal die Grundlagen der Shellprogrammierung an.

    Gruß Wolfgang
    PS Auch hier ist es angebracht, dass du auf die von dir verwendete ksh hinweist.
    In ein paar Wochen weiss das keiner mehr, da der Zusammenhang zum anderen Thread verloren geht.
     
Thema:

awk Probleme bzw. datenbank herauslesen

Die Seite wird geladen...

awk Probleme bzw. datenbank herauslesen - Ähnliche Themen

  1. Top10 Foto aus der Datenbank abfragen, Probleme

    Top10 Foto aus der Datenbank abfragen, Probleme: Hallo, ich lasse bei mir auf der Seite Fotos bewerten. Und jeder User darf bis zu 9 Fotos zur bewertung hochladen. So wen ich in der Top10 Liste...
  2. grub-pc Probleme bei upgrade

    grub-pc Probleme bei upgrade: Hallo, ich habe beim dist-upgrade folgendes Problem: ---------- Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt. Trigger für...
  3. Probleme mit YUM

    Probleme mit YUM: Hallo, ich habe CentOs 7 als Dualboot mit Windows 7 auf einen Dell Latitude E5510 installiert. Dies hat soweit auch alles geklappt. Leider habe...
  4. Forscher analysieren Durchsatzprobleme im Linux-Scheduler

    Forscher analysieren Durchsatzprobleme im Linux-Scheduler: Eine Gruppe von Forschern hat Fälle identifiziert, in denen der Scheduler im Linux-Kernel falsche Entscheidungen trifft und die CPUs nicht so gut...
  5. München: LiMux als Sündenbock für IT-Probleme?

    München: LiMux als Sündenbock für IT-Probleme?: Im Münchner Stadtrat soll später in diesem Jahr erneut über den Einsatz von Linux in der Stadtverwaltung diskutiert werden. Die Grünen vermuten,...