मेरे पास इस तरह एक CSV फ़ाइल है:
abd,123,egypt,78
cde,456,england,45
मैं केवल 3 कॉलम शब्दों की वर्ण गणना कैसे प्राप्त कर सकता हूं?
मैं यह पता नहीं लगा सकता कि यह कैसे wc
करना है।
मेरे पास इस तरह एक CSV फ़ाइल है:
abd,123,egypt,78
cde,456,england,45
मैं केवल 3 कॉलम शब्दों की वर्ण गणना कैसे प्राप्त कर सकता हूं?
मैं यह पता नहीं लगा सकता कि यह कैसे wc
करना है।
जवाबों:
cut -d, -f3 | tr -d '\n' | wc -m
(याद रखें कि wc -c
बाइट्स मायने रखता है, वर्ण नहीं:
$ echo a,1,españa,2 | cut -d, -f3 | tr -d '\n' | wc -c
7
$ echo a,1,españa,2 | cut -d, -f3 | tr -d '\n' | wc -m
6
)
wc
क्योंकि मुझे चरित्र की गिनती देने में सक्षम नहीं किया गया था , यही कारण है कि मैं दिखाता हूं कि wc
इस संदर्भ में कैसे उपयोग किया जाए।
awk -F, '{sum+=length($3)}; END {print +sum}' file
awk
स्तंभ आधारित फ़ाइलों को संसाधित करने के लिए डिज़ाइन किया गया था, लाइन-बाय-लाइन। उपकरण के लिए समस्या पूरी तरह से अनुकूल है।
0
इनपुट फाइल खाली होने पर खाली लाइन के बजाय प्रिंट करना है।
awk
) को प्राप्त किया जा सकता है, जो कि विशिष्ट यूनिक्स स्पिरिट में केस को सहयोग करते हुए (समवर्ती रूप से) काम कर रहा है। आप यह देख सकते हैं कि कैसे कट + tr + wc एक के रूप में तेजी से 5 प्रकार के रूप में यह एक के रूप में 5 बार के रूप में तेजी से perl
एक ही है। (कम से कम मेरे सिस्टम पर, UTF8 लोकेल में, 100MB फ़ाइल पर कोशिश की गई)।
एक perl
समाधान:
perl -Mopen=:locale -F, -anle '$sum += length($F[2]); END{print $sum}' file
या एक छोटा संस्करण:
perl -Mopen=:locale -F, -anle '$sum += length($F[2])}{print $sum' file
-Mopen=:locale
के लिए perl
उपयोगकर्ता / प्रणाली की क्या एक चरित्र है की परिभाषा का उपयोग करने, अन्यथा यह मान लिया गया वर्ण बाइट्स हैं। a,1,españa,2
UTF-8 लोकेल में इनपुट पर प्रयास करें (अधिकांश सिस्टम पर डिफ़ॉल्ट)।
अपनी नमूना फ़ाइल के साथ ऐसा करें:
$ cat sample.txt
abd,123,egypt,78
cde,456,england,45
$ awk -F, '{print $3}' sample.txt | while read i; do echo "$i" | \
tr -d '\n' | wc -m; done
5
7
wc
प्रत्येक पंक्ति की गिनती प्राप्त करने के लिए काम करना मुश्किल हो सकता है। आपको इसे कॉलम 3 से प्रत्येक स्ट्रिंग के लिए व्यक्तिगत रूप से कॉल करना होगा जो कि आप जो चाहते हैं उसे करने के लिए थोड़ा मुश्किल हो जाता है। आपको अपने CSV की प्रत्येक पंक्ति को देखना होगा, कॉलम 3 को निकालना होगा और फिर wc
चरित्र की गिनती प्राप्त करने के लिए इसे प्रस्तुत करना होगा ।
का उपयोग कर sed
औरawk
sed 's/.*,.*,\(.*\),.*/\1/g' file | awk -v FS="" '{print NF;}'
उदाहरण:
$ (echo abd,123,egypt,78; echo cde,456,england,45;) | sed 's/.*,.*,\(.*\),.*/\1/g' | awk -v FS="" '{print NF;}'
5
7
दो जाग के
awk -F, '{print $3}' file | awk -v FS="" '{print NF;}'
उदाहरण:
$ (echo abd,123,egypt,78; echo cde,456,england,45;) | awk -F, '{print $3}'| awk -v FS="" '{print NF;}'
5
7
wc
आउटपुट प्राप्त करने के लिए कमांड का उपयोग करने में सक्षम नहीं हूं !'