Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

Lösung zu Blatt 3 --- Implementierung kleiner Datenbanken unter UNIX (SS 2001)

3.1 Ein besserer Schnitt

OLDIFS="$IFS"
DEL=":"
while getopts "d:f:" opt
do
   case $opt in
   f) COLS=$OPTARG;;
   d) DEL=$OPTARG;;
   *) echo "usage $0 [-d delimiter] [-f columns]"
      exit 1 ;;
   esac
done
IFS=","
COL=""
TDEL=""
for i in $COLS
do
   COL=$COL"$TDEL"${i}
   TDEL=$DEL
done
IFS="$DEL"
while read line
do
   TDEL=""
   set $line
   for i in $COL
   do
      echo -n "$TDEL"
      TDEL=$DEL
      echo -n ${!i}
   done
   echo ""
done
IFS="$OLDIFS"

3.2 Ein Klausuraushang

OLDIFS="$IFS"
IFS=":"
exec <names
while read line
do
   set $line              # Belege $1 .. $3
   len=$(( ${#2} - 4 ))   # Len enthaelt Pos. der viertletzten Ziffer
   echo ${2:$len}:$3      # Gibt letzte vier Stellen und Note aus.
done
exec </dev/tty
IFS="$OLDIFS"

3.3 Noch ein ,,besserer`` Schnitt

sed -n -f muster names

s/.*\([^:]\{4,\}\):\([^:]*\)$/\1:\2/p

Universität Fakultät SAI

Ingo Melzer, 06. June 2000