लाइन शेल स्क्रिप्ट में वर्णों की संख्या पाएं

मैं निर्देशिका से फ़ाइलों से एक अक्षर (ए-जेड, 0-9, ए-जेड) कैसे गिन सकता हूं जिसमें अन्य उपनिर्देशिकाएं हैं। मैंने grep और wc के साथ प्रयास किया है लेकिन यह काम नहीं करता है

1
जोड़ा संपादित
विचारों: 1
कुल मिलाकर। मुझे एक ऐसा विज्ञान बनाना है जो किसी निर्देशिका से वर्णों की कुल संख्या की गणना करता है जिसमें एक और उपनिर्देशिकाएं हो सकती हैं जिसमें वर्णों वाली फाइलें हो सकती हैं
जोड़ा लेखक user3022764, स्रोत
क्या आप प्रति फ़ाइल गिनती या कुल गिनती चाहते हैं?
जोड़ा लेखक anubhava, स्रोत

2 उत्तर

इस egrep का प्रयोग करें:

egrep -ro '[a-zA-Z0-9]+' *|tr -d '\n'|wc -m

या यह:

egrep -ro '[[:alnum:]]+' "$1" |tr -d '\n'|wc -m
1
जोड़ा
लेकिन निर्देशिका का मार्ग एक तर्क $ 1. मैं इसे कैसे भेजूं?
जोड़ा लेखक user3022764, स्रोत
इसलिए ... मुझे एक स्क्रिप्ट में एक-लाइनर बनाना है, जो उस निर्देशिका के पथ की तरह तर्क देता है जिसमें अधिक फ़ाइलें और अन्य उपनिर्देशिकाएं होती हैं। स्क्रिप्ट को कुल chr की संख्या/home/student/character03 में लिखना चाहिए। और मुझे एक अन्य फाइल में भी लिखना है। स्क्रिप्ट के निष्पादन के दौरान दिखाई देने वाली सभी त्रुटियों के बारे में
जोड़ा लेखक user3022764, स्रोत
@glennjackman: धन्यवाद, बहुत अच्छा मुद्दा, मैं grep में \ n को स्ट्रिप करने का प्रयास कर रहा था लेकिन tr का उपयोग करके इसे सरल बनाता है।
जोड़ा लेखक anubhava, स्रोत
@ user3022764: इसे आज़माएं: egrep -ro '[a-zA-Z0-9] +' "$ 1" | tr -d '\ n' | wc -m
जोड़ा लेखक anubhava, स्रोत
@ user3022764: इसका उपयोग करें: egrep -ro '[[: alnum:]] +' "$ 1" | tr -d '\ n' | wc -m>/home/student/character03 हालांकि मेरा मानना ​​है कि आपको कुछ प्रयास भी दिखाना चाहिए और न केवल टिप्पणियों में नए प्रश्न पूछना जारी रखें।
जोड़ा लेखक anubhava, स्रोत
अच्छा विचार है, लेकिन आप भी कई नई लाइनों की गिनती कर रहे हैं। wc से पहले tr -d '\ n' जोड़ें
जोड़ा लेखक glenn jackman, स्रोत
ध्यान दें कि वर्ण वर्ग [[: alnum:]] [a-zA-Z0-9] (सी लोकेल में) के बराबर है और यह आसान हो सकता है आंखें
जोड़ा लेखक glenn jackman, स्रोत

This is a script that when you ll run it given the full path of the main folder ( the folder that contains the sub-directories which contains the text files ) as first argument will print out the total count --->>>

## $1 will be the total path

## This variable will be
## a list of all sub-directories
sub_dirs=`ls $1`

## Total holding count variable
count=0

## Looping over the
## each sub-directory
for i in $sub_dirs;
do
    ## Looping over
    ## each file
    for j in `ls $1/$i`;
    do
        ## Counting the characters
        total_characters=`wc -c "$1/$i/$j" | awk ' { print $1 } '`;

        ## Adding the result to the count
        count=`expr $count + $total_characters`;
    done
done

## Printing out the total count
echo $count

मुझे उम्मीद है कि यह मदद करता है ... क्योंकि मैंने सवाल पूरी तरह से समझ नहीं लिया ...

ग्रीस से चीयर्स यूनिक्स रहो!

0
जोड़ा
मुझे पाइप के साथ एक ऑनलाइनर चाहिए और> मुझे लगता है
जोड़ा लेखक user3022764, स्रोत
मुझे एक स्क्रिप्ट में एक ऑनलाइनर बनाना है जैसा मैंने पहले कहा था। यह उस निर्देशिका के मार्ग को तर्क देता है जिसमें ओशर निर्देशिकाएं और फ़ाइलें शामिल हैं। और मुझे उन फ़ाइलों में से प्रत्येक शब्द को घर/छात्र/वर्णों में उन शब्दों से रीडायरेक्ट करना है, लेकिन केवल 0-9 और az , एजेड, अन्य विशेष वर्णों के बिना अंतरिक्ष के। और, file.err में स्क्रिप्ट को स्क्रिप्ट के निष्पादन के दौरान त्रुटियों को लिखना चाहिए। यह ओएस में एक होमवर्क है और मैंने अभी खोल स्क्रिप्टिंग शुरू कर दी है। कृपया मदद करें। कल मेरे पास परीक्षा है
जोड़ा लेखक user3022764, स्रोत
हां.क्योंकि सिस्टम फाइलों और निर्देशिकाओं को उत्पन्न करेगा। यह एक होमवर्क है और मेरे पास सभी इनपुट हैं। इसलिए मेरा ऑनलाइनर इस तरह से स्टार्स्ट है: $ 1 -type f/grep ........ और सिस्टम मिलेगा मेरे लिए कुछ त्रुटियां भी उत्पन्न करें जो उन्हें उन्हें फ़ाइल में रीडायरेक्ट करने के लिए उत्पन्न करती हैं। होम/छात्र/chars03.err
जोड़ा लेखक user3022764, स्रोत
ओह अब मैं देख रहा हूं ... मैं यह कोशिश करूंगा जब मैं अपने शहर में रहूंगा, मैं जल्द ही यात्रा करूंगा, मैं एक अन्य शहर में हूं जहां मेरा कॉलेज है। सिर्फ एक प्रश्न है कि आप गिनती के बाद फ़ाइलों को एक ही रहना चाहते हैं?
जोड़ा लेखक L0aD1nG, स्रोत