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
    


  • Skulptur der Justizia vor einem Gebäude

    Schulterschluss für ein Studium der Rechtswissenschaften an der TU Chemnitz

    Neue Website der TU Chemnitz zeigt, dass sich Vertreterinnen und Vertreter aus der Justiz, der Anwaltschaft, der Wirtschaft und der Wissenschaft einig sind, wie man in Chemnitz durch neue Studienangebote in den Rechtswissenschaften dem zunehmenden Bedarf an Juristinnen und Juristen in Sachsen wirkungsvoll begegnen kann …

  • Drei Männer stehen nebeneinander. Ein Mann in der Mitte hält eine Urkunde in den Händen.

    Peter Bernshausen ist neuer Kanzler der TU Chemnitz

    Mit der Bestellung durch das Sächsische Staatsministerium für Wissenschaft, Kultur und Tourismus übernimmt Peter Bernshausen ab 1. November 2024 die Leitung der Zentralen Universitätsverwaltung …

  • Grafik mit Vernetzungssymbolen

    Tag des wissenschaftlichen Nachwuchses am 28. November 2024

    Der „Tag des wissenschaftlichen Nachwuchses“ der TU Chemnitz steht in diesem Jahr im Zeichen der vielfältigen Wege zur Promotion und zu unterschiedlichen Karriereoptionen nach der Promotion – Kostenfreie Teilnahme ist nach Online-Anmeldung möglich …

  • Blick auf ein buntes Bild an einem Gebäudeanbau.

    Neue Kunst im „Erfenschlag“

    Studierende und Beschäftigte der TU Chemnitz schufen durch Malen auf dem Wasser ein Kunstwerk, das nun einen Gebäudeanbau auf dem Gelände des südlichsten Uni-Standorts ziert …