Ich habe eine Datei mit positiven Zahlen, negativen Zahlen und Zahlen in wissenschaftlicher Notation, alle in der gleichen Spalte. Ich möchte es nach dem absoluten Wert der Zahl sortieren, unter Berücksichtigung der wissenschaftlichen Notation.sortieren numerische Spalte basierend auf absoluten Werten und wissenschaftliche Notation
Betrachten wir zum Beispiel diese Datei:
cat foo
7.70488617137843e-05
-8.50387220311822
0.1
-3.3453262e-02
ich versucht habe:
sort foo
0.1
-3.3453262e-02
7.70488617137843e-05
-8.50387220311822
Diese behandelt positive und negative Zahlen als gleich (= absoluter Wert, was ich will); aber ignoriert wissenschaftliche Notation.
.
sort -n foo
-8.50387220311822
-3.3453262e-02
0.1
7.70488617137843e-05
Dies berücksichtigt positive und negative Werte und ignoriert wissenschaftliche Notation. Das ist das Gegenteil von dem, was ich will.
.
Dies respektiert wissenschaftliche Notation (die ich will), sondern auch positive und negative Werte.
.
Der Ausgang Ich werde aussehen wie wünschen:
7.70488617137843e-05
-3.3453262e-02
0.1
-8.50387220311822
Diese respektiert wissenschaftliche Schreibweise, sondern behandelt positive und negative Zahlen gleich.
Ich habe die Sortier-Dokumentation gelesen, aber ich kann keine Antwort finden.
Ich benutze bash Version 4.1.2
Dank
Danke euch allen. Ich wähle diese Antwort, weil sie sed und sort verwendet, mit denen ich ein bisschen mehr vertraut bin. Außerdem gibt es eine Erklärung, was der Code tut. In Bezug auf die Codedetails könnte jemand die Bedeutung dieser beiden Ausdrücke in sed weiter ausführen: 1) (. *) [Mit Escapezeichen() und 2) das $ -Symbol? – Mau