Contoh file.txt
:
100 foo
2 bar
300 tuu
Saat menggunakan sort -k 1,1 file.txt
, urutan garis tidak akan berubah, meskipun kami mengharapkan:
2 bar
100 foo
300 tuu
Bagaimana cara mengurutkan bidang yang terdiri dari angka berdasarkan nilai numerik absolut?
-g, --general-numeric-sort
bisa lebih disarankan. Hal ini selanjutnya memungkinkan adanya notasi ilmiah misalnya 1.234E10 dll.Jika Anda mengurutkan string yang merupakan teks & angka campuran, misalnya nama file log bergulir, maka pengurutan
sort -n
tidak berfungsi seperti yang diharapkan:Dalam hal ini opsi
-V
melakukan trik:dari halaman manual:
sumber
ls
melaluised
substitusi untuk menghapus huruf dan hanya menyisakan angka, ternyata keluaran berwarna juga mempengaruhi banyak hal. Jadi, berlarils --color=never
juga membuat perbedaan.-V
persis seperti yang saya cari. Saya harus membiasakan untuk melihat-lihat halaman manual terlebih dahulu.Nah, sebagian besar jawaban lain di sini mengacu pada
Namun, saya tidak yakin ini berfungsi untuk angka negatif. Berikut hasil yang saya dapatkan dengan mengurutkan versi 6.10 di Fedora 9.
File masukan:
Keluaran:
Yang jelas tidak diurutkan berdasarkan nilai numerik.
Kemudian, saya kira jawaban yang lebih tepat akan digunakan
sort -n
tetapi hanya jika semua nilainya positif.PS: Menggunakan
sort -g
mengembalikan hasil yang sama untuk contoh iniEdit:
Sepertinya pengaturan lokal mempengaruhi bagaimana tanda minus mempengaruhi pesanan ( lihat di sini ). Untuk mendapatkan hasil yang tepat, saya baru saja melakukan:
sumber
Anda harus menggunakan opsi sortir numerik:
sumber
Gunakan
sort -n
atausort --numeric-sort
.sumber
Anda harus melakukan perintah berikut:
sort -n -k1 filename
Itu harus dilakukan :)
sumber
Gunakan sort -nr untuk mengurutkan dalam urutan menurun. Lihat
Menyortir
Lihat halaman Man di atas untuk referensi lebih lanjut
sumber
sumber