क्या लिनेक्स / टर्मिनल के तहत गणना करने का कोई तरीका है, एक सादे पाठ फ़ाइल में कितनी बार चार एफ होता है?
क्या लिनेक्स / टर्मिनल के तहत गणना करने का कोई तरीका है, एक सादे पाठ फ़ाइल में कितनी बार चार एफ होता है?
जवाबों:
इस बारे में कैसा है:
fgrep -o f <file> | wc -l
नोट: याद रखने / डुप्लिकेट करने और कस्टमाइज़ करने में बहुत आसान होने के अलावा, यह Vereb के उत्तर की तुलना में लगभग तीन गुना (क्षमा करें, संपादित करें! पहला परीक्षण बॉटक्ड) है।
\r
या \n
वर्णों की आवश्यकता है ; tr -cd f
जवाब यह है कि के लिए काम करता है।
a
, b
और c
, का उपयोग egrep
: egrep -o 'a|b|c' <file> | wc -l
।
wc -c
रूप में उपयोग नहीं करने के लिए सावधान रहें tr
: चूंकि grep
लाइन द्वारा आउटपुट लाइन, wc
वर्णों के रूप में अंत-की-पंक्तियों की गणना करेगी (इसलिए वर्णों की संख्या दोगुनी)।
\r
, लेकिन यह गिनने के लिए \n
कि सिर्फ उपयोग क्यों नहीं wc -l
?
और भी तेज:
tr -cd f < file | wc -c
4.9 एमबी और खोजे गए चरित्र के 1100000 घटनाओं के साथ इस कमांड के लिए समय :
real 0m0.089s
user 0m0.057s
sys 0m0.027s
Vereb जवाब के लिए समय के साथ echo
, cat
, tr
और bc
एक ही फाइल के लिए:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
रोब Hruska जवाब के लिए समय के साथ tr
, sed
और wc
एक ही फ़ाइल के लिए:
real 0m0.465s
user 0m0.411s
sys 0m0.080s
एक ही फ़ाइल के साथ fgrep
और उसके लिए Jefromi उत्तर का समय wc
:
real 0m0.522s
user 0m0.477s
sys 0m0.023s
a
, b
और c
: की गणना करने के लिए tr -cd abc < file | wc -l
।
tr -cd abc < file | wc -c
इसके बजाय मान लीजिए
echo $(cat <file> | wc -c) - $(cat <file> | tr -d 'A' | wc -c) | bc
जहां ए चरित्र है
4.9 MB और खोजे गए वर्ण के 1100000 आवृत्तियों वाली फ़ाइल के साथ इस आदेश के लिए समय:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
cat
एस को बाहर निकालते हैं , फ़ाइल नाम को तर्क के रूप में देते हैं wc
और tr
।
stdin
, लेकिन यह cat
एड के बजाय पाइप किया जा सकता है :tr -d 'A' < <file> | wc ...
यदि आपको केवल अपने चरित्र से युक्त रेखाओं की संख्या गिननी है, तो यह काम करेगा:
grep -c 'f' myfile
हालाँकि, यह एकल मेल के समान लाइन पर 'f' की कई घटनाओं को गिनता है।
tr -d '\n' < file | sed 's/A/A\n/g' | wc -l
अपने चरित्र के साथ "ए" की दो घटनाओं की जगह, और अपनी इनपुट फ़ाइल के साथ "फ़ाइल"।
tr -d '\n' < file
: नई टिप्पणियाँ निकालता हैsed 's/A/A\n/g
: "ए" की हर घटना के बाद एक नई पंक्ति जोड़ता हैwc -l
: लाइनों की संख्या गिनता हैउदाहरण:
$ cat file
abcdefgabcdefgababababbbba
1234gabca
$ tr -d '\n' < file | sed 's/a/a\n/g' | wc -l
9