जवाबों:
आप इसके लिए उपयोग कर सकते हैं 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
पाइप दर्शक उपयोगिता इस उद्देश्य के लिए डिजाइन किया गया था। यदि यह आपके उद्देश्यों के लिए पर्याप्त लचीला नहीं है, तो आप अपने स्वयं के FIFO डेटा ट्रांसफ़र मापने के कोड को पाइपलाइन हेरफेर लाइब्रेरी ( libpipeline ) फ़ंक्शन कॉल जैसे 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
रिटर्न prefer 4.0 K` है अगर यह किसी भी 4,0k से छोटा है क्योंकि यह ब्लॉकों में पढ़ता है