উত্তর:
আপনি এটির wc
জন্য ব্যবহার করতে পারেন :
grep pattern file.txt | wc -c
আউটপুটে বাইট সংখ্যা গণনা করা হবে। আপনি বৃহত্তর মানগুলিকে "মানব-পঠনযোগ্য" ফর্ম্যাটে রূপান্তর করতে পোস্ট-প্রক্রিয়া করতে পারেন ।
আপনি pv
পাইপের ভিতরে এই তথ্যটি পেতে ব্যবহার করতে পারেন:
grep pattern file.txt | pv -b > output.txt
(এটি মানব-পঠনযোগ্য ফর্ম্যাটে প্রক্রিয়াজাত বাইটের সংখ্যা প্রদর্শন করে)।
| wc -c | sed 's/$/\/1024\/1024/' | bc
। এটি /1024/1024
আউটপুটে সংযোজন করে এবং ফলস্বরূপ স্ট্রিংয়ের উপর একটি ক্যালকুলেটর চালায়।
pv
মোট বাইট গণনা পতাকা সহ আপনি পাইপভিউয়ার সরঞ্জামটি ব্যবহার করতে পারেন -b
:
$ dd if=/dev/zero bs=3 count=4211 2>/dev/null | pv -b >/dev/null
12.3KiB
$ grep pattern file.txt | pv -b >/dev/null
পাইপ ভিউয়ার ইউটিলিটি এই কাজের জন্য পরিকল্পনা করা হয়েছিল। যদি এটি আপনার উদ্দেশ্যে পর্যাপ্ত নমনীয় না হয় তবে আপনি পাইপলাইন ম্যানিপুলেশন লাইব্রেরি ( লাইবপাইপলাইন ) ফাংশন কল pipeline_pump()
এবং এর সাথে আপনার নিজের ফিফোর ডেটা ট্রান্সফার মাপার কোডটি প্রয়োগ করতে পারেন pipeline_peek_size()
।
$ whatis pv
pv (1) - monitor the progress of data through a pipe
$ pv -Wi 0.002 -cf /etc/hosts | wc -l
367 B 0:00:00 [2.71MiB/s]
[============================================================================>]
100%
10
$
পাইথনে যে কেউ দ্রুত নিজস্ব সমাধান তৈরি করতে পারে:
#!/usr/bin/env python
import sys
count = 0
while True:
byte = sys.stdin.read(1)
if not byte:
break
count = count + 1
print(count)
যেমনটি কাজ করে:
$ echo "Hi" | ./count_stdin_bytes.py
3
$ echo "Hello" | ./count_stdin_bytes.py
6
$ dd if=/dev/zero bs=1 count=1024 2>/dev/null | ./count_stdin_bytes.py
1024
আপনার নির্দিষ্ট ক্ষেত্রে যেহেতু আপনি টেক্সট ডাটা (বাস্তবতা থেকে বিচার যে আপনার কাছ থেকে পাইপ সাথে এসেছেন ডিলিং grep
), তবে আপনাকে ব্যবহার করতে পারে bash
'র read
। এটার মতো কিছু:
$ echo "Hello" | { while read -n 1 char; do ((count++)) ;done ; echo $count; }
6
wc -c
? while read ...
সম্ভবত উল্লেখযোগ্যভাবে ধীর হবে। এছাড়াও, ওপি মানব পাঠযোগ্য আউটপুট হিসাবে ( ls -h
)
wc -c
কারণdu -h
এটি ব্লকগুলিতে যেমন পড়ছে তেমন 4,0k এর চেয়ে ছোট যদি returns 4.0 K` প্রদান করে