Saya pikir itu sort
akan mengurutkan awalan bersama tetapi itu tidak selalu terjadi. Ambil input ini misalnya:
AT0S*eightieths
AT0S*eyetooth's
AT*ad
AT*Ad
AT*AD
AT*Eydie
AT*eyed
ATF*adv
ATF*ATV
ATF*edify
ATF*Ediva
ATFKT*advocate
ATFKTNK*advocating
ATFKT*outfought
ATFKTS*advocates
ATHT*whitehead
ATHT*Whitehead
AT*id
AT*I'd
AT*Ito
AT*IUD
ATJ*adage
ATNXNS*attention's
ATNXNS*attenuation's
ATNXNS*autoignition's
AT*oat
AT*OD
AT*outweigh
AT*owed
ATP0K*idiopathic
ATP*adobe
ATT*wighted
ATT*witted
ATT*wooded
AT*UT
AT*Uta
AT*wowed
AT*Wyatt
ATX*atishoo
Setelah sort
, saya berharap semua AT*
berakhir dalam satu potongan tetapi ketika Anda menjalankan data ini melalui sort
, ==
input output . Mengapa demikian? Saya tidak menentukan opsi apa pun untuk mengabaikan karakter non-alfabet atau apa pun. Adil sort dict > out
.
Versi saya sort
berasal coreutils 8.5-1ubuntu3
.
Jawaban:
Ini menjaga urutan angka.
sumber
Pengaturan LC_ALL = C mengembalikan urutan penyortiran tradisional dalam kasus saya. Paket: coreutils Versi: 8.5-1ubuntu3
sumber
LANG=C
juga berfungsi. Yang membingungkan saya:LANG
diatur keen_US.UTF-8
; kenapa*
masih diperlakukan spesial ??LC_COLLATE
adalah pengaturan yang khusus untuksort
, dll.export
atau bahkan mengatur lokal dan mungkin mengacaukan sesuatu yang lain. Hanya mengatur dalam panggilan untuk semacam:LC_ALL=C sort
. Misalnyaecho -e 'a\n*\n*b\nc' | LC_ALL=C sort
, LC_ALL tidak akan diubah di luar panggilan untuk menyortirIni berfungsi seperti yang diharapkan untuk saya (di cygwin).
sort input > output
hasil dalamApakah semacam itu terkait dengan sesuatu? mencoba
\sort
Juga
sumber
Versi: sort (GNU coreutils) 8.26
Saya melakukannya sebaris:
Atau dengan fungsi (mengubah file asli):
sumber
Untuk memberikan jawaban sederhana berdasarkan komentar orang lain, itu tidak mengubah lingkungan Anda:
atau
atau kombinasinya.
sumber
Dengan GNU sort, Anda dapat menggunakan
--dictionary-order
:sumber