CSV फ़ाइल में लाइनों की संख्या प्राप्त करने के लिए यूनिक्स कमांड


22

मुझे आने वाली CSV फ़ाइलों से लाइनों की गिनती प्राप्त करनी है।

मैंने गिनती प्राप्त करने के लिए निम्नलिखित कमांड का उपयोग किया है।

wc -l filename.csv

1 रिकॉर्ड के साथ आने वाली फ़ाइल पर विचार करें, मुझे \*शुरुआत में कुछ फाइलें मिल रही हैं , और उन फाइलों के लिए अगर मैं उपरोक्त आदेश जारी करता हूं तो यह वापस आ जाती है 0

\*फ़ाइल की शुरुआत में गिनती की गई रेखा के रूप में पंजीकृत क्यों नहीं है और क्या कोई काम है?


"बिल्ली फ़ाइल नाम
.csv

4
"cat filename.csv | wc -l" तार्किक रूप से "wc -l filename.csv" की तरह ही काम करता है, लेकिन यह कम कुशल और सुरुचिपूर्ण है
Alex

Devoloper250, क्या आप उस अंतिम पैराग्राफ को थोड़ा और स्पष्ट कर सकते हैं? एक उदाहरण भी मदद कर सकता है।
एलेक्स

उदाहरण: Iam को 1 रिकॉर्ड के साथ सीएसवी फाइलें मिल रही हैं, जो लाइन की शुरुआत में * (तारांकन) है। जब मैं wc -l fn.csv iam को 0 के रूप में गिनता हूं, लेकिन आदर्श रूप से यह 1 होना चाहिए। क्या अन्य वाइल्डकार्ड्स की तरह इसमें भी कोई खास बात है?
Devoloper250

जब आप "cat filename.csv" चलाते हैं तो परिणाम क्या होते हैं? इसके अलावा, आप किस वितरण का उपयोग कर रहे हैं?
JNevill

जवाबों:


9

यह सुनिश्चित करने के लिए कि गैर-समाप्त लाइनों को भी गिना जा सकता है:

cat filename.csv | xargs -l echo | wc -l

यह सभी गैर-खाली लाइनों को गिनने के लिए लगता है, लेकिन खाली लाइनों को छोड़ देता है।

कृपया ध्यान दें कि यह अप्रभावी है, लेकिन यह संभवतः समसामयिक उपयोग के लिए एक समस्या नहीं है।

एक और संभावना, गैर-समाप्त अंतिम पंक्ति सहित सभी लाइनों को गिना जाता है:

awk '{n+=1} END {print n}' filename.csv

आरएचईएल 6.2 पर परीक्षण किया गया। YMMV।


awkओएस एक्स पर आदेश काम करता है
मीका स्टब्स

1

wc केवल एक लाइन और कोई अनुगामी न्यूलाइन वाली फ़ाइलों के लिए 0 रिपोर्ट करेगा। हो सकता है कि आपकी वन-रिकॉर्ड सीएसवी फाइलें इस तरह की हों? आप hexdump के साथ नई अनुगामी खोज सकते हैं, उदा:

hexdump -C fn.csv

अंत में ascii कोड 0a देखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.