बड़े डेटा सेट के लिए लिनक्स कमांड लाइन?


0

समस्या: मेरे पास डेटा की एक बड़ी एक्सेल फाइल है, 1000 कॉलम और 40,000 से अधिक पंक्तियाँ हैं। मुझे यह पहचानना होगा कि किसी दिए गए सेल में किसी भी पंक्ति का मान> 199 कहाँ है। यदि किसी पंक्ति में किसी पंक्ति में> 199 नहीं है तो मैं उन पंक्तियों को हटाना चाहता हूं। ताकि मैं केवल उन पंक्तियों के साथ रह जाऊँ जहाँ कम से कम एक सेल का मान> 199 है।

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

आपके सहयोग के लिए धन्यवाद।

नीचे दिए गए डेटा की उदाहरण छवि। यहां मैं केवल उन पंक्तियों को चाहूंगा, जिन्होंने कोशिकाओं को हाइलाइट किया है (क्योंकि वे 200 हैं), लेकिन मैं सिर्फ बयानों की तुलना में सॉर्ट फ़ंक्शन या जटिल का उपयोग नहीं कर सकता, क्योंकि मेरे डेटा सेट में बहुत सारे कॉलम हैं, इसलिए वह बहुत समय लेने वाला है ...

यहाँ छवि विवरण दर्ज करें


मुझे समझ नहीं आ रहा है। क्या यह एक्सेल के बारे में एक प्रश्न है? क्या आपने अपने डेटा को एक्सेल से टेक्स्ट फ़ाइल में निर्यात किया है? विवरण, कृपया। कृपया टिप्पणियों में प्रतिक्रिया न दें;  इसे स्पष्ट और अधिक पूर्ण बनाने के लिए अपने प्रश्न को संपादित करें।
स्कॉट

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

1
@titus: मैं किसी ऐसे व्यक्ति से अपेक्षा करूंगा जो संपादन और संशोधन इतिहास के बारे में जानने के लिए आठ साल से साइट पर है। यदि आप देखते हैं, तो आप देखेंगे कि मैंने अपनी टिप्पणी के बाद "एक ही फ़ाइल के रूप में एक डेटा फ़ाइल" बयान जोड़ा था।
स्कॉट

जवाबों:


0

चूंकि आपने कहा था कि "इस मुद्दे पर कैसे संपर्क करें?" यहाँ एक दृष्टिकोण है:

यदि आप जानते हैं कि पायथन का उपयोग कैसे किया जाता है, तो आप फ़ाइल को अल्पविराम से अलग की गई फ़ाइल के रूप में सहेज सकते हैं और केवल एक छोटी स्क्रिप्ट लिखकर फ़ाइल के माध्यम से चला सकते हैं और फिर csvडेटा के साथ कुछ करने के लिए उपयोग कर सकते हैं। आप किसी भी ऑपरेटिंग सिस्टम का उपयोग कर सकते हैं जो अजगर का समर्थन करता है।


मैं सिर्फ अजगर सीख रहा हूं, इसलिए मैंने पहले कोई स्क्रिप्ट नहीं लिखी है, यह क्या स्क्रिप्ट करेगा?
अन्ना

उदाहरण के लिए, आप "xlrd" मॉड्यूल का उपयोग कर सकते हैं, विशेष रूप से इसके sheet.nrows और sheet.row_values ​​(n) विधियों में। Xlrd का उपयोग करने के लिए एक छोटा सा ट्यूटोरियल geeksforgeeks.org/reading-excel-file-use-python
Christoph Sommer

0

मेरे पास बहुत सामान्य सलाह नहीं है। विशेष रूप से, मैं आपको इस awk कमांड का उपयोग करने की सलाह देता हूं:

awk '{
        over=0
        for (i=1; i<=NF; i++) if ($i > 199) over=1
        if (over) print
     }'

मैंने आपकी फ़ाइल से नंबरों के आधार पर एक छोटी डेटा फ़ाइल बनाई, और कुछ मैंने अपने दम पर बनाई:

$ cat input
81      23      40
31      0       416     12
2       2       1
157     41      80      201
417     42      17

$ ./myscript input
31      0       416     12
157     41      80      201
417     42      17

अपनी फ़ाइल से पंक्तियों को हटाने के लिए , करें

$ ./myscript input > input.new
$ mv input.new input

टिप्पणियाँ:

  • अपने हित के लिए, आपको यह तय करना चाहिए कि आपकी आवश्यकता> 199,> 200,, 200 या क्या है।
  • यदि आपको पंक्ति 1 (यानी, पंक्ति 1, शीर्ष लेख पंक्ति) रखने की आवश्यकता है, तो ऐसा कहें।
  • मैंने एक बड़ी फाइल पर इसका परीक्षण नहीं किया है।  awkबड़ी संख्या में पंक्तियों (लाइनों) के साथ कोई समस्या नहीं होनी चाहिए। एक हजार कॉलम (फ़ील्ड) एक मुद्दा हो सकता है, लेकिन मुझे संदेह है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.