जबकि आपकी मूल फ़ाइल में ऐसी पंक्तियाँ होती हैं जो \nआपकी अंतिम फ़ाइल के साथ होती हैं \r\n। इसके अतिरिक्त \rजो आकार बदलता है।
यह बताने के लिए, कि जब मैं अपने लिनक्स सिस्टम पर आपकी कमांड चलाता हूं, तो यहां क्या होता है:
$ sort < file.txt | uniq > sorted-file.linux.txt
$ ls -l file.txt sorted-file.linux.txt
-rw-r--r-- 1 terdon terdon 2958616 Jul 10 12:11 file.txt
-rw-r--r-- 1 terdon terdon 2942389 Jul 10 15:15 sorted-file.linux.txt
$ wc -l file.txt sorted-file.linux.txt
273882 file.txt
271576 sorted-file.linux.txt
जैसा कि आप देख सकते हैं, सॉर्ट की गई डुप्लिकेट फ़ाइल कुछ पंक्तियाँ छोटी और परिणामस्वरूप, कुछ बाइट्स छोटी होती हैं। हालाँकि, आपकी फ़ाइल अलग है:
$ wc -l sorted-file.linux.txt sorted-file.txt
271576 sorted-file.linux.txt
271576 sorted-file.txt
दो फ़ाइलों में बिल्कुल समान पंक्तियाँ हैं, लेकिन:
$ ls -l file.txt sorted-file.linux.txt sorted-file.txt
-rw-r--r-- 1 terdon terdon 2958616 Jul 10 12:11 file.txt
-rw-r--r-- 1 terdon terdon 2942389 Jul 10 15:15 sorted-file.linux.txt
-rw-r--r-- 1 terdon terdon 3213965 Jul 10 12:11 sorted-file.txt
sorted-file.txt, एक मैं अपने लिंक से डाउनलोड, बड़ा है। यदि हम अब पहली पंक्ति की जांच करते हैं, तो हम अतिरिक्त देख सकते हैं \r:
$ head -n1 sorted-file.txt | od -c
0000000 a \r \n
0000003
लिनक्स में मेरे द्वारा बनाए गए में मौजूद नहीं हैं:
$ head -n1 sorted-file.linux.txt | od -c
0000000 a \n
0000002
यदि अब हम \rआपकी फ़ाइल से निकालते हैं :
$ tr -d '\r' < sorted-file.txt > new-sorted-file.txt
हमें अपेक्षित परिणाम मिलता है, एक फ़ाइल जो मूल से छोटी है, ठीक उसी तरह जैसे मैंने अपने सिस्टम पर बनाई थी:
$ ls -l sorted-file.linux.txt new-sorted-file.txt file.txt
-rw-r--r-- 1 terdon terdon 2958616 Jul 10 12:11 file.txt
-rw-r--r-- 1 terdon terdon 2942389 Jul 10 15:19 new-sorted-file.txt
-rw-r--r-- 1 terdon terdon 2942389 Jul 10 15:15 sorted-file.linux.txt
\r\nलाइन एंडिंग्स हैं, जबकि इनपुट फ़ाइल में\nलाइन एंडिंग्स हैं। शायद आपको अपना लोकेल अलग तरह से सेट करना चाहिए।LC_ALL=Cप्रत्येक कमांड के सामने प्रयास करें ।