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
Ingo Melzer, 06. June 2000