2012-02-02 22 views
8

मैं फ़ाइलों का एक समूह सॉर्ट करना चाहता हूं। मैंक्या मुझे फ़ाइल को सॉर्ट करने के लिए दूसरी फ़ाइल उत्पन्न करने की आवश्यकता है?

sort file.txt > foo.txt 
mv foo.txt file.txt 

लेकिन क्या मुझे यह दूसरी फ़ाइल चाहिए?

(मैं निश्चित रूप से sort file.txt > file.txt की कोशिश की, लेकिन तब मैं सिर्फ एक खाली फ़ाइल के साथ समाप्त हो गया।)

उत्तर

12

प्रयास करें:

sort -o file.txt file.txt 

देखें http://ss64.com/bash/sort.html

`-o OUTPUT-FILE' 
    Write output to OUTPUT-FILE instead of standard output. If 
    OUTPUT-FILE is one of the input files, `sort' copies it to a 
    temporary file before sorting and writing the output to 
    OUTPUT-FILE. 
+0

+1 ;-) कुछ विवरण: 'sort'' mv foo.txt file.txt' स्वयं करेगा। – olibre

+0

आह, हम वहां जाते हैं!मैंने उस झंडे को आदमी में देखा, लेकिन अतिरिक्त जानकारी नहीं देखी। संपादित करें: विषम। अतिरिक्त जानकारी मेरे मैन पेजों में नहीं है। वह आदमी पृष्ठ क्यों आप अधिक व्यापक होने के लिए लिंक कर रहे हैं? – Nagel

+1

@Nagel - पता नहीं। जब मैंने 'मैन सॉर्ट' की खोज की तो यह Google पर पहली बार हिट थी। बर्कले मैन पेज की समान जानकारी है, लेकिन थोड़ा और संक्षिप्त है। –

1

sort की तरह क्लासिक यूनिक्स उपकरण के दर्शन भी शामिल है कि आप उनके साथ एक पाइप का निर्माण कर सकते हैं। प्रत्येक छोटा टूल STDIN से पढ़ता है और STDOUT पर लिखता है। इस तरह पाइप के नीचे अगला छोटा उपकरण इनपुट के रूप में पहले के आउटपुट को पढ़ सकता है और उस पर कार्य कर सकता है।

तो मैं कहूंगा कि यह एक बग है और सुविधा नहीं है।

कृपया ESR द्वारा बहुत अच्छी पुस्तक में पी ipes, Redirection, and Filters के बारे में भी पढ़ें।

+0

एक अच्छी किताब की तरह लग रहा है। – Nagel

0

हां, आपको दूसरी फ़ाइल की आवश्यकता है! आदेश

sort file.txt > file.txt 

पहले यह sort को क्रियान्वित करने के लिए शुरू होता stout की पुनर्निर्देशन स्थापित करने के लिए पार्टी के लिए होगा। यह आपकी इनपुट फ़ाइल को पकड़ने का एक निश्चित तरीका है।

आप कई फाइलों को सॉर्ट करना चाहते हैं की कोशिश:

cat *.txt | sort > result.txt 
+0

मुझे बहुत संदेह था। यह किसी भी तरह से सुरुचिपूर्ण महसूस किया: पी धन्यवाद! – Nagel

+0

-1 एक '-o' विकल्प है जो आउटपुट को उसी फ़ाइल में –

+0

@AndrewCooper की अनुमति देता है: मुझे पता है, लेकिन उपरोक्त आउटपुट रीडायरेक्शन के मामले में, इस मामले में आपको अतिरिक्त फ़ाइल की आवश्यकता है! यहां तक ​​कि -o एक अस्थायी फ़ाइल का उपयोग करता है, कि आपको सृजन की परवाह नहीं है इसका मतलब यह नहीं है कि यह वहां नहीं है! – Mithrandir

1

क्योंकि आप एक ही फाइल आप 'पर वापस लिख रहे हैं क्रमबद्ध लोड लोड होने से पहले आउटपुट फ़ाइल खोलने वाले रीडायरेक्ट की समस्या के साथ हमेशा समाप्त हो जाएगा मूल मूल। तो हाँ, आपको एक अलग फ़ाइल का उपयोग करने की आवश्यकता है।

अब, यह कहकर, पूरी फ़ाइल को पाइप स्ट्रीम में पहले बफर करने के तरीके हैं, लेकिन आम तौर पर आप ऐसा नहीं करना चाहते हैं, हालांकि यह संभव है यदि आप ऐसा करने के लिए कुछ लिखते हैं। लेकिन आप शुरुआत में और बफरिंग करने के अंत में विशेष उपकरण डालेंगे। हालांकि, यदि आप इसका > रीडायरेक्ट का उपयोग करते हैं तो बैश, आउटपुट फ़ाइल को जल्द ही खोल देगा।

0

यदि आप एक फ़ाइल से निश्चित लंबाई रिकॉर्ड को सॉर्ट करने के साथ काम कर रहे हैं, तो सॉर्ट एल्गोरिदम फ़ाइल के भीतर रिकॉर्ड स्वैप कर सकता है। कुछ उपलब्ध एल्गोरिदम availabe हैं। आपकी पसंद फ़ाइल की यादृच्छिकता गुणों की मात्रा पर निर्भर करेगी। आम तौर पर, क्विकॉर्ट्स रिकॉर्ड्स की सबसे कम संख्या को स्वैप करता है और आम तौर पर ऐसा होता है जो पहले एल्गोरिदम की तुलना में पहले पूरा करता है।

संबंधित मुद्दे

 संबंधित मुद्दे