如何测量管道数据的大小?

Raf*_*ael 19 pipe

我想做这样的事情:

> grep pattern file.txt | size -h
16.4 MB
Run Code Online (Sandbox Code Playgroud)

或等效于:

> grep pattern file.txt > grepped.txt
> ls -h grepped.txt
16.4 MB
> rm grepped.txt
Run Code Online (Sandbox Code Playgroud)

(不过会有点不方便)

那可能吗?

Ste*_*itt 36

您可以wc为此使用:

grep pattern file.txt | wc -c
Run Code Online (Sandbox Code Playgroud)

将计算输出中的字节数。您可以对其进行后处理以将大值转换为“人类可读”的格式

您还可以使用pv在管道中获取此信息:

grep pattern file.txt | pv -b > output.txt
Run Code Online (Sandbox Code Playgroud)

(这以人类可读的格式显示处理的字节数)。

  • 我更喜欢 `wc -c` 因为 `du -h` 返回 `4.0 K` 如果它在块中读取时小于 4,0k (2认同)

Bja*_*sen 9

您可以使用pv带有总字节数标志的 pipeviewer 工具-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
Run Code Online (Sandbox Code Playgroud)