লিনাক্স / টার্মিনালের অধীনে কি কোনও উপায় গণনা করা যায়, একটি সরল পাঠ্য ফাইলে চর f কতবার ঘটে?
লিনাক্স / টার্মিনালের অধীনে কি কোনও উপায় গণনা করা যায়, একটি সরল পাঠ্য ফাইলে চর f কতবার ঘটে?
উত্তর:
এটি সম্পর্কে:
fgrep -o f <file> | wc -l
দ্রষ্টব্য: স্মরণ করা / নকল করা এবং কাস্টমাইজ করা আরও সহজ ছাড়াও, এটি Vereb এর উত্তরের চেয়ে প্রায় তিন বার (দুঃখিত, সম্পাদনা করুন! প্রথম পরীক্ষায় বচত) is
\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
রব হুশকার উত্তর tr
, sed
এবং wc
একই ফাইলের জন্য সময়:
real 0m0.465s
user 0m0.411s
sys 0m0.080s
একই ফাইল সহ fgrep
এবং জেফ্রমি উত্তর দেওয়ার সময় 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
যেখানে A হ'ল চরিত্র
4.9 এমবি এবং 1100000 অনুসন্ধান করা চরিত্রের উপস্থিতি সহ একটি ফাইল সহ এই কমান্ডের সময়:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
cat
গুলি ব্যবহার করেন, ফাইলনামটিকে যুক্তি হিসাবে দেন wc
এবং এটি প্রায় তৃতীয়াংশ দ্রুত হয় tr
।
stdin
তবে এটি সম্পাদনার পরিবর্তে পাইপ দেওয়া যেতে পারে cat
:tr -d 'A' < <file> | wc ...
আপনার চরিত্রটি ধারণ করে রেখাগুলির সংখ্যা গণনা করা হলে এটি কাজ করবে:
grep -c 'f' myfile
তবে এটি একক ম্যাচের মতো একই লাইনে 'চ' এর একাধিক ঘটনা গণনা করে।
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