Springe zum Hauptinhalt

Bourne
next up previous contents
Next: Primitive Turbo-C-Variante Up: Beispiele für Shell-Programmierung Previous: Selektives Kopieren

Varianten des Sieb-Filters

  • Schreiben Sie einen Filter namens sieb, der nur jede zweite Zeile von stdin -> stdout kopiert.
    #!/bin/sh
    #
    # Filter sieb (variante 0)
    #
    # Aufruf: sieb0
    #
    a=1
    while read n
    do
        a=`expr $a '*' -1`
        if test $a -gt 0
        then
            echo $n
        fi
    done
    
  • Problem: In den durchgelassenen Zeilen gehen Leerzeichen verloren, wenn mehrere zusammenhängende Leerzeichen auftreten (read-Kommando)
  • Diese Filter ist zu verallgemeinern. Beim Aufruf sieba +n soll jede n-te Zeile kopiert werden. Beim Aufruf sieba -n soll jede n-te Zeile ignoriert werden. Für n sollen die Werte 2 bis 9 zugelassen sein; dies ist zu überprüfen!
    #!/bin/sh
    #
    # Filter sieba
    #
    # Aufruf: sieba +n    kopieren jeder n-ten Zeile
    #         sieba -n    ignorieren jeder n-ten Zeile
    #
    
    if test $# -ne 1
    then
        echo "Benutze:   sieba +n  oder  sieba -n"
        echo "1 < n < 10"
        exit 1
    fi
    x=`echo "$1" | cut -c1`
    case $x in
        '-' ) : ;;
        '+' ) : ;;
        *   ) echo "Benutze:   sieba +n  oder  sieba -n"
              echo "1 < n < 10"
              exit 1
              ;;
    esac
    x=`echo "$1" | cut -c2`
    case $x in
        [2-9] ) : ;;
        *   ) echo "Benutze:   sieba +n  oder  sieba -n"
              echo "1 < n < 10"
              exit 1
              ;;
    esac
            
    a=`echo "$1" | cut -c2`
    if test "$1" -gt 0
    then
        d=1
    else
        d=0
    fi
    r=$a
    while read n
    do
        a=`expr $a '-' 1`
        if test $d -eq 0
        then
            if test $a -eq 0 
            then
                a=$r
                continue
            else
                echo $n
                continue
            fi
        fi
        if test $a -eq 0 
        then
            echo $n
            a=$r
        fi
    done
    


  • Porträt eines Mannes

    Studieren trotz Vollzeitjob

    Max Chris Schreiber hat nach seinem VWA-Abschluss erfolgreich ein berufsbegleitendes Bachelorstudium „Public Sector Management“ an der TU Chemnitz gemeistert und damit seinen Blick auf den öffentlichen Sektor erweitert …

  • Eine blonde Frau hält zwei beschriftete Aufkleber hoch.

    TU Chemnitz feiert erneut Vielfalt beim Christopher Street Day

    Let’s celebrate #TUCgether: TU Chemnitz nimmt am 4. Juli 2026 mit einem Wagen am Christopher Street Day in Chemnitz teil und zeigt die Vielfalt der TUC-Familie – Alle sind herzlich eingeladen, sich zu beteiligen …

  • Eine Schülerin im weißen Kittel experimentiert mit einem Reagenzglas im Labor.

    Junge Chemietalente auf der Suche nach der Substanz X

    55. Ausgabe des Chemie-Wettbewerbs „Julius Adolph Stöckhardt“ fand an der TU Chemnitz statt – Toni Radecker vom Clemens-Winkler-Gymnasium Aue belegte Platz 1 und verteidigte damit seinen Titel aus dem Vorjahr …

  • Ein Mann steht vor einem Gebäude.

    „Die Sprachbarriere verschwindet schneller, als man denkt“

    Piotr Marsza?ek aus Katowice hat über die „Betreuungsinitiative Deutsche Auslands- und Partnerschulen“ des Deutschen Akademischen Austauschdienstes den Weg an die TU Chemnitz gefunden …