निम्नलिखित कोड स्निपेट में क्या हो रहा है? मुझे मेरा अपेक्षित आउटपुट नहीं मिल रहा है।
मुझे लगता है कि यह एक बग था, लेकिन यह 2 अलग-अलग कार्यक्रमों (यूनीक और सॉर्ट) के लिए होता है, इसलिए मुझे संदेह है कि इसके साथ कुछ करना है ... ठीक है, मुझे नहीं पता कि क्या है .. इसलिए सवाल।
पहले 3 (4 में से) उदाहरण काम करते हैं, लेकिन 4 फेल है!।
मैं किसी भी और सभी पात्रों के लिए समान व्यवहार की उम्मीद करूंगा।
अर्थात। (इनपुट की 3 लाइनों से) 2 लाइनों बाहर मुद्रित करने के लिए ... लेकिन 4 मामले में, मैं सिर्फ 1 लाइन (दोनों के लिए मिलता है sort -u
और uniq
); दो समान लिंस गायब हो जाते हैं!
मैंने आउटपुट '\ n' को दृश्य की कॉम्पैक्टीनेस के लिए स्थान में बदल दिया है।
मैं uniq और (GNU coreutils) 7.4 से सॉर्ट कर रहा हूँ ... Ubuntu 10.04.3 LTS डेस्कटॉप पर चल रहा है।
लिपी:
{
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
}
उत्पादन:
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
और इसके uniq
साथ ठीक काम करते हैं: LC_COLLATE=C; echo -e "〼\n〇\n〇" |sort -u
(या |uniq
)
sort
अकेले (बिना -u विकल्प) ... वर्ण हडप जाना नहीं है .. क्या में चला जाता है, बाहर आता है ... लेकिन, जैसा कि उम्मीद की जा सकती द्वारा गाइल्स होने "विदेशी" यूनिकोड वर्ण की व्याख्या एक ही विहित मूल्य , इन वर्णों को क्रमबद्ध नहीं किया जाता है, इसके अलावा वे आउटपुट के "टॉप" के लिए सॉर्ट किए गए फ़िफ़ो समूह के रूप में आउटपुट होते हैं ... इसलिए यहां वास्तव में दो मुद्दे हैं: 1. वर्ण सॉर्ट नहीं किए जाते हैं जैसा कि "भोली हो सकता है" "अपेक्षित, और 2. दोनों की" अनूठी "विशेषताsort
औरuniq
डेटा खोना (कुछ मामलों में)।