Apa yang terjadi dalam cuplikan kode berikut? Saya tidak mendapatkan hasil yang saya harapkan.
Saya pikir itu adalah bug, tetapi itu terjadi untuk 2 program yang berbeda (uniq dan urutkan), jadi saya curiga ada hubungannya dengan ... well, saya tidak tahu apa .. maka pertanyaannya.
3 (dari 4) contoh pertama berfungsi, tetapi yang ke-4 gagal !.
Saya mengharapkan perilaku yang sama untuk setiap dan semua karakter.
yaitu. untuk mencetak 2 baris (dari 3 baris input) ... tetapi dalam kasus ke-4, saya hanya mendapatkan 1 baris (untuk keduanya sort -u
dan uniq
); dua kaleng identik menghilang begitu saja!
Saya telah mengonversi keluaran '\ n' ke ruang untuk tampilan yang kompak.
Saya menggunakan uniq dan menyortir dari (GNU coreutils) 7.4 ... berjalan di Ubuntu 10.04.3 LTS desktop.
Naskah:
{
locale -k LC_COLLATE
echo
for c1 in x 〼 ;do
for c2 in z 〇 ;do
echo -n "asis : "; echo -e "$c1\n$c2\n$c2" |tr '\n' ' ';echo
echo -n "uniq : "; echo -e "$c1\n$c2\n$c2" |uniq |tr '\n' ' ';echo
echo -n "sort -u: "; echo -e "$c1\n$c2\n$c2" |sort -u |tr '\n' ' ';echo
echo
done
echo
done
}
Hasil:
collate-nrules=4
collate-rulesets=""
collate-symb-hash-sizemb=2081
collate-codeset="UTF-8"
asis : x z z
uniq : x z
sort -u: x z
asis : x 〇 〇
uniq : x 〇
sort -u: 〇 x
asis : 〼 z z
uniq : 〼 z
sort -u: 〼 z
asis : 〼 〇 〇
uniq : 〼
sort -u: 〼
# In the last example (of 4) where did the '〇' go? .. U+3007 IDEOGRAPHIC NUMBER ZERO
#
sort -u
dan uniq
berfungsi dengan baik dengan: LC_COLLATE=C; echo -e "〼\n〇\n〇" |sort -u
(atau |uniq
)
sort
sendirian (tanpa opsi -u ) ... tidak melahap karakter .. Apa yang masuk, keluar ... Namun, seperti yang dapat diharapkan oleh penjelasan Gilles tentang karakter unicode "eksotis" yang memiliki nilai kanonik yang sama , ini karakter tidak disortir, selain itu mereka output sebagai kelompok FIFO yang tidak disortir ke "atas" keluaran sortir ... Jadi sebenarnya ada dua masalah di sini: 1. Karakter tidak disortir karena mungkin "naif" "Diharapkan, dan 2. Fitur" unik "dari keduanyasort
danuniq
kehilangan data (dalam beberapa kasus).