Hasil tak terduga dari perintah sortir linux bash


0

Saya punya file foo.txt dengan konten ini:

chr1    15
chr11   5
chr11   8
chr1    7
chr2    23
chr1    35

Saya mencoba mengurutkannya terlebih dahulu sesuai dengan kolom pertama, dan kemudian menurut kolom kedua untuk memutuskan hubungan dengan perintah berikut di linux shell:

sort -k 1,1 -k 2,2n foo.txt

Tetapi hasilnya aneh:

chr1    7
chr1    15
chr11   5
chr11   8
chr1    35
chr2    23

Apa yang saya harapkan adalah ini:

chr1    7
chr1    15
chr1    35
chr11   5
chr11   8
chr2    23

EDIT Saya memeriksa karakter dalam file dengan od -fc foo.txt seperti yang disarankan dalam komentar, tidak ada karakter aneh. Inilah hasilnya:

0000000   3.5274972e-09   8.7240555e-33   3.5274972e-09    8.716562e-33
          c   h   r   1  \t   1   5  \n   c   h   r   1   1  \t   5  \n
0000020   3.5274972e-09   8.8610065e-33   3.5274972e-09   2.5496164e+21
          c   h   r   1   1  \t   8  \n   c   h   r   1  \t   7  \n   c
0000040   2.1479764e-33   2.5493397e+21   2.1359394e-33     9.37439e-40
          h   r   2  \t   2   3  \n   c   h   r   1  \t   3   5  \n
0000057

saya menggunakan sort (GNU coreutils) 8.21 Ada ide?


Hmm, saya mendapatkan hasil yang Anda harapkan, GNU sortir versi 8.21
glenn jackman

Apakah ada karakter aneh di file? Mencoba od -c foo.txt
glenn jackman

Output juga seperti yang diharapkan dengan Cygwin sort (GNU coreutils) 8.15
DavidPostill

@glennjackman Saya telah memperbarui pertanyaan sesuai dengan komentar Anda
Ali

@ DavidPostill Masalahnya memburuk! Saya kira saya kehilangan beberapa argumen input ...
Ali

Jawaban:


1

Tampaknya preferensi penyortiran tempat Anda masalah. Anda dapat menentukannya di lingkungan Anda, lalu perintah apa pun yang menggunakannya (termasuk sort ) akan mematuhinya:

export LC_COLLATE=C
sort -k 1,1 -k 2,2n foo.txt

Atau Anda dapat menentukan nilai itu hanya untuk durasi pengurutan itu sendiri

LC_COLLATE=C sort -k 1,1 -k 2,2n foo.txt       # or
env LC_COLLATE=C sort -k 1,1 -k 2,2n foo.txt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.