Filtern und zuordnen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von satriani, 17.04.2013.

  1. #1 satriani, 17.04.2013
    satriani

    satriani SysLion

    Dabei seit:
    20.04.2011
    Beiträge:
    39
    Zustimmungen:
    0
    Hallo,

    ich muss eine Eingabe filtern und zuordnen zB.:
    man gibt ein
    dabei muss folgendes rauskommen
    ich habe mit for Schleife angefangen

    Code:
    #!/bin/sh
    
    funktion() {
            for i in $@
            do
               if [ echo $i | grep 'alpha' ]; then
                 alpha=$i
               else
                 if [ echo $i | grep 'beta' ]; then
                   beta=$i
                 else
                   error=$i
                fi
              fi
            done
    }
    
    funktion $@
    ALPHA=`echo $alpha | sed 's/ /, /g'`
    BETA=`echo $beta | sed 's/ /, /g'`
    
    echo "Alpha: $ALPHA"
    echo "Beta: $BETA"
    echo $error
    Doch damit wird es wohl nichts. Ich versuche gerade mit case, doch das gelingt mir ebenfalls nicht recht.

    Ich freue mich auf die Vorschläge und danke im Voraus.
     
  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 bytepool, 18.04.2013
    Zuletzt bearbeitet: 18.04.2013
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hej,

    welche Shell? In der Bash sollte das hier funktionieren:
    Code:
    #!/bin/bash                                                                                                                                                                                                    
    
    declare -i acounter=0
    declare -i bcounter=0
    declare -i ecounter=0
    
    for i in $@
    do
        if [[ "$i" =~ .*alpha.* ]]; then
            alpha[$acounter]="$i"
            acounter=$((acounter + 1))
        else
            if [[ "$i" =~ .*beta.* ]]; then
                beta[$bcounter]="$i"
                bcounter=$((bcounter + 1))
            else
                error[$ecounter]="$i"
                ecounter=$((ecounter + 1))
            fi
        fi
    done
    
    echo alpha: ${alpha[@]}
    echo beta: ${beta[@]}
    echo error: ${error[@]}
    
    
    EDIT:
    Ich sehe gerade dass deine Signatur FreeBSD und csh sagt. Es ist sicher sinnvoll das trotzdem in relevante posts reinzuschreiben, denn Signaturen koennen sich aendern und haben prinzipiell nichts mit dem Post zu tun, weswegen ich sie automatisch ueberlese.
    War die standard-shell in FreeBSD frueher nicht ash? Naja, die bourne shell hat leider keine Arrays, da wirst du dir was anderes ueberlegen muessen. Vielleicht emulieren (http://docstore.mik.ua/orelly/unix/upt/ch45_34.htm)?

    Keine Ahnung was sich da in den letzten 20 Jahren getan hat, aber bei csh denke ich immer an das hier: ;)
    http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot


    MfG,
    bytepool
     
  4. #3 satriani, 18.04.2013
    satriani

    satriani SysLion

    Dabei seit:
    20.04.2011
    Beiträge:
    39
    Zustimmungen:
    0
    Erstmal danke vielmals für deine Mühe.
    Ich habe extra noch das Teufelchen Smilie genommen um Benutzer aus die Signatur aufmerksam zu machen, anscheinend wirkt es nicht so doll :D

    Danke für den Tipp, ich werd mal versuchen und komme zurück wenn ich deine Hilfe brauche :)
     
  5. #4 tgruene, 18.04.2013
    tgruene

    tgruene Routinier

    Dabei seit:
    02.02.2012
    Beiträge:
    418
    Zustimmungen:
    0
    Nur weil Deine login-Shell csh ist, fuehrst Du Dein Skript ja nicht mit der csh aus, sondern mit /bin/sh (s. erst Zeile des Skriptes), und es wuerde mich schwer wundern, wenn die in FreeBSD auf die csh verlingt waere - damit wuerde wahrscheinlich das System gar nicht mehr booten, weil sh und csh ueberhaupt nicht kompatibel sind.
     
  6. #5 satriani, 18.04.2013
    satriani

    satriani SysLion

    Dabei seit:
    20.04.2011
    Beiträge:
    39
    Zustimmungen:
    0
    Danke tgruene,
    dann ändere ich die Signatur noch einmal. Damit ist es hoffentlich mit der Shell endgültig abgeschlossen :)
     
Thema:

Filtern und zuordnen

Die Seite wird geladen...

Filtern und zuordnen - Ähnliche Themen

  1. Umlaute Filtern

    Umlaute Filtern: Hi zusammen, bin recht neu was UNIX Skripten angeht und hänge gerade bei etwas fest. Ich möchte eine Datei erstellen in welche ein Befehl kommt....
  2. Artikel: E-Mails filtern mit KMail

    Artikel: E-Mails filtern mit KMail: Fast alle E-Mail-Programme bieten einen Filtermechanismus an. In diesem Artikel wird die Anwendung des Filtermechanismus von KMail erläutert....
  3. FFmpeg 2.0 mit OpenCL und vielen neuen Filtern

    FFmpeg 2.0 mit OpenCL und vielen neuen Filtern: Das FFmpeg-Projekt hat sein Multimedia-Framework in der Version 2.0 veröffentlicht. FFmpeg ermöglicht es Anwendern, nahezu alle Multimediaformate...
  4. String filtern

    String filtern: Moin, ich habe mich mal wieder rangesetzt und versucht ein bisschen C++ zu machen. In meinem Programm möchte ich eine Website laden und dann...
  5. find nach filtern

    find nach filtern: hallo zusammen, Ich habe mehrere Dateien, welche auf zahlen enden, z.B. so file-x-xx-xxxx-1.log ich möchte nun gerne per find alle Dateien...