Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
#!/bin/sh # # Dieses Skript soll den Mittelwert und die Standardabweichung von Messdaten in # Tabellenform berechnen. Nýýhere Informationen ýýber die einzelnen Optionen # erhýýlt man mit dem Parameter -h. if [ $# -le 0 ]; then echo "Zu wenig Argumente... -h fýýr Hilfe" exit 1 fi #Es folgen die Defaulteinstellungen: QUIET=AUS STANDARDABWEICHUNGTEST=AUS MITTELWERTTEST=AN MESSUNGTEST=AUS COL=1 while [ $# -gt 0 ]; do case $1 in -u) echo "Usage: getmean $@" shift ;; -c) COL=$2 shift shift ;; -s) STANDARDABWEICHUNGTEST=AN shift ;; -q) QUIET=AN shift ;; -m) MITTELWERTTEST=AN shift ;; -v) MITTELWERTTEST=AN MESSUNGTEST=AN STANDARDABWEICHUNGTEST=AN shift ;; *) FILE=$1 break ;; esac done # Wir ermitteln jetzt die Anzahl der Kommentarzeilen KOMMENTAR=`grep -c '#' $FILE` #Nun gebe ich an wie awk bei welchen Optionen rechnen soll if [ $MESSUNGTEST = AN ]; then awk -v col=$COL -v kommentar=$KOMMENTAR 'BEGIN { mess = 0; } /^\#/ { next; } $col ~ /^[0-9]/ {mess = mess + 1; } END { print "Messungen: ",mess; }' $FILE fi if [ $MITTELWERTTEST = AN ]; then awk -v col=$COL -v kommentar=$KOMMENTAR 'BEGIN { MITTELWERT = 0; sum = 0; } /^\#/ { next; } $col ~ /^[0-9]/ {sum=sum+$col} {MITTELWERT=sum/(NR-kommentar); } END { print "Mittelwert: ",MITTELWERT; }' $FILE fi #if [ $STANDARDABWEICHUNGTEST = AN ]; then #............ #............ #fi |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »kaesekuchen86« (01.01.2007, 23:32)
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Zitat
Original von kaesekuchen86
Und zu 3: Seh ich das richtig, das awk immer Zeilenweise vorgeht? Wenn ja, dann hab ich da auch schon ne Idee....
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
while getopts ab foo do case $foo in a) echo "Es wurde a gewaehlt" ;; b) echo "Es wurde b gewaehlt" ;; *) echo "Falshc" ;; esac; done |
Quellcode |
|
1 2 |
# echo 3 | awk '{ print $1^2 }' 9 |
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 |
BEGIN { summe=0 } { quadrat=$1^2 print quadrat summe=summe+quadrat } END { print "SUMME=", summe } |
Quellcode |
|
1 2 3 4 5 6 7 8 9 |
1 2 3 4 5 6 7 8 9 |
Zitat
bash-2.05b$ awk -f sum.awk input.tst
1
4
9
16
25
36
49
64
81
SUMME= 285
bash-2.05b$