PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Die höchste Zahl im suchen



m_schnyd
19-08-2005, 10:44
Hallo
Ich habe folgendes Problem

In einem file habe ich mehrere Zahlen, welche untereinander aufgelistet sind:

23
45
66
102
...


ich möchte mit einer function die höchste Zahl auslesen und diese in einer Variable übergeben. ich habe keine Ahnung wie ich das anstellen soll.
ich benutze ksh.

Vielen Dank für Eure Hilfe.

peschmae
19-08-2005, 10:50
z.B. so:


VAR=`sort -n datei.txt | tail -1`


geht zumindest in der bash. Ich vermute mal mit ksh auch.

MfG Peschmä

BeS
19-08-2005, 17:11
Wobei sortieren natürlich nicht wirklich nötig ist. Ich würde das ganz einfach so machen:
Erste Zahl in Variable speichern und dann die Zahlen eine nach der anderen durchgehen, ist sie größer wie die gespeicherte wird die gespeicherte überschrieben. Am Ende steht die größte Zahl in der Variable. Ist vom Aufwand das effektivste, da du nicht drum herum kommst jede Zahl einmal an zu sehen.

peschmae
19-08-2005, 18:09
Das hab ich mir erst auch gedacht - aber dann fand ich

1) ist es schneller geschrieben so - und das ist für mich das Hauptziel bei Bashscripten
2) bist du ja nicht wirklich sicher ob ein in C geschriebenes effizientes sort nicht doch schneller ist als eine Schleife in der Bash - müsste man halt für die konkreten Daten messen ;)

MfG Peschmä

Joghurt
20-08-2005, 01:15
Ich habs mal getestet, folgendes Shellskript
#!/bin/sh
N=0
while read n; do
if [ $n -gt $N ]; then
N=$n
fi
done <test
echo $Nist über fünfmal langsamer als die sort-Version bei einer Datei mit 100000 Zahlen. Solange die Datei also nicht gigantisch groß ist, und ein im Speicherhalten nicht praktikabel ist, nimm die sort-Version.

m_schnyd
25-08-2005, 10:13
Es funz. Merci :)


z.B. so:


VAR=`sort -n datei.txt | tail -1`


geht zumindest in der bash. Ich vermute mal mit ksh auch.

MfG Peschmä