जबकि आपकी मूल फ़ाइल में ऐसी पंक्तियाँ होती हैं जो \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
प्रत्येक कमांड के सामने प्रयास करें ।