मेरे पास इस तरह एक 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,2UTF-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आउटपुट प्राप्त करने के लिए कमांड का उपयोग करने में सक्षम नहीं हूं !'