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-sort
ratsamer 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 -n
funktioniert 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 -V
macht 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
ls
durchgehenden sed
Substitutionen durchgeleitet wurden, um die Buchstaben zu entfernen und nur Zahlen zu hinterlassen, die farbige Ausgabe anscheinend auch die Dinge beeinflusste. Laufen ls --color=never
machte also auch einen Unterschied.
-V
genau 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 -n
aber nur, wenn alle Werte positiv sind.
PS: Die Verwendung von sort -g
liefert 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 -n
oder 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