Antworten:
Werfen Sie einen Blick auf die Manpage, um zu sortieren ...
-n, --numeric-sort compare according to string numerical value
Also hier ist ein Beispiel ...
sort -n filename
-g, --general-numeric-sortratsamer sein kann. Dies ermöglicht ferner die wissenschaftliche Notation, z. B. 1.234E10 usw.
Wenn Sie Zeichenfolgen sortieren, bei denen es sich um gemischten Text und Zahlen handelt, z. B. Dateinamen von fortlaufenden Protokollen, sort -nfunktioniert das Sortieren mit nicht wie erwartet:
$ ls |sort -n
output.log.1
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.2
output.log.20
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
In diesem Fall -Vmacht die Option den Trick:
$ ls |sort -V
output.log.1
output.log.2
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.20
von der Manpage:
-V, --version-sort natural sort of (version) numbers within text
lsdurchgehenden sedSubstitutionen durchgeleitet wurden, um die Buchstaben zu entfernen und nur Zahlen zu hinterlassen, die farbige Ausgabe anscheinend auch die Dinge beeinflusste. Laufen ls --color=nevermachte also auch einen Unterschied.
-Vgenau das habe ich gesucht. Ich sollte es mir zur Gewohnheit machen, zuerst die Manpages durchzusehen.
Nun, die meisten anderen Antworten beziehen sich hier
sort -n
Ich bin mir jedoch nicht sicher, ob dies für negative Zahlen funktioniert. Hier sind die Ergebnisse, die ich mit der Sortierversion 6.10 auf Fedora 9 erhalte.
Eingabedatei:
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
Ausgabe:
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
Welches ist offensichtlich nicht nach numerischen Wert geordnet.
Dann denke ich, dass eine genauere Antwort wäre, sort -naber nur, wenn alle Werte positiv sind.
PS: Die Verwendung von sort -gliefert für dieses Beispiel genau die gleichen Ergebnisse
Bearbeiten:
Anscheinend wirken sich die Gebietsschemaeinstellungen darauf aus, wie sich das Minuszeichen auf die Reihenfolge auswirkt ( siehe hier ). Um die richtigen Ergebnisse zu erzielen, habe ich gerade Folgendes getan:
LC_ALL=C sort -n filename.txt
Sie müssen die numerische Sortieroption verwenden:
sort -n -k 1,1 File.txt
Verwenden Sie sort -noder sort --numeric-sort.
Verwenden Sie sort -nr zum Sortieren in absteigender Reihenfolge. Verweisen
Weitere Informationen finden Sie auf der obigen Manpage
echo " Enter any values to sorting: "
read n
i=0;
t=0;
echo " Enter the n value: "
for(( i=0;i<n;i++ ))
do
read s[$i]
done
for(( i=0;i<n;i++ ))
do
for(( j=i+1;j<n;j++ ))
do
if [ ${s[$i]} -gt ${s[$j]} ]
then
t=${s[$i]}
s[$i]=${s[$j]}
s[$j]=$t
fi
done
done
for(( i=0;i<n;i++ ))
do
echo " ${s[$i]} "
done